Приведение строки в качестве Guid с помощью LINQPad

#c# #linq #linq-to-sql #linqpad

#c# #linq #linq-to-sql #linqpad

Вопрос:

Когда я запускаю следующее в LINQPad

 var ProductIds = from p in Products 
where p.Id = "F1FE990C-4525-4BFE-9E2C-A7AFFF0DDA1F"
select p;

ProductIds.Dump();
  

это дает мне

Не удается неявно преобразовать тип ‘string’ в ‘System.Guid’

Я просто не знаю, как правильно применить ее к GUid, я думаю

Ответ №1:

Попробуйте использовать Guid.Parse(string guid) статический метод.

 var ProductIds = from p in Products 
where p.Id == Guid.Parse("F1FE990C-4525-4BFE-9E2C-A7AFFF0DDA1F")
select p;

ProductIds.Dump();
  

Комментарии:

1. Уже пробовал, но это выдает ошибку «Не удается неявно преобразовать тип ‘System.Guid’ в ‘bool'»

2. Убедитесь, что у вас есть == между сравнением p.Id и ваших Guid.Parse() утверждений, ни одного = .

3. 🙂 я, должно быть, пьян. Спасибо, чувак

4. @NathanAnderson При использовании LINQPad я получаю сообщение об ошибке: 'System.Guid' does not contain a definition for 'Parse'

5. Попробуйте использовать конструктор, который принимает строку в качестве аргумента. msdn.microsoft.com/en-us/library/96ff78dc(v=vs.110).aspx

Ответ №2:

В настоящее время у вас есть назначение, но вы хотите использовать сравнение — используйте == вместо = :

 var ProductIds = from p in Products 
                 where p.Id == Guid.Parse("F1FE990C-4525-4BFE-9E2C-A7AFFF0DDA1F")
                 select p;
  

Ответ №3:

Вы не можете привести ее, вы должны проанализировать ее следующим образом:

 where p.Id = Guid.Parse("F1FE990C-4525-4BFE-9E2C-A7AFFF0DDA1F");
  

Комментарии:

1. Пожалуйста, посмотрите мой ответ на комментарий @Nathan

2. Итак, попробуйте Guid.Parse("F1FE990C-4525-4BFE-9E2C-A7AFFF0DDA1F").CompareTo(p.Id) = 0

3. Извините за беспокойство. Я думаю, у меня проблема с алкоголем 🙂

Ответ №4:

Вы также можете задать переменную с помощью:

 Guid guid = new Guid ("F1FE990C-4525-4BFE-9E2C-A7AFFF0DDA1F");
  

Затем

 var ProductIds = from p in Products
where p.Id == guid
select p;

ProductIds.Dump();