#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();