我需要从 Table1 中获取 id 值,它是一个 Guid。此查询也可以返回 null。所以我开始关注
Guid? SomeID = from R in Table1
join P in Table2
on R.Id equals P.Id2
where R.Name == 'blah blah'
select R.Id;
但是我得到以下编译错误。
Cannot implicitly convert type 'System.Linq.IQueryable' to 'System.Guid?'
改变指南? Guid 没有帮助。
Guid SomeID = from R in Table1
join P in Table2
on R.Id equals P.Id2
where R.Name == 'blah blah'
select R.Id;
现在我得到以下错误。
Cannot implicitly convert type 'System.Linq.IQueryable' to 'System.Guid'
我做错了什么?
最佳答案
您的查询返回所有匹配的 guid,它的类型为 IQueryable<Guid?>
IQueryable<Guid?> guids =
from R in Table1
join P in Table2
on R.Id equals P.Id2
where R.Name == 'blah blah'
select R.Id;
如果您需要一个 guid,请使用 First
, Single
, FirstOrDefault
, 或 SingleOrDefault
Guild? guid = guids.FirstOrDefault();
或者在单个语句中:
Guid? guid = Table1.Where(R => R.Name == "blah")
.Join(Table2, R => R.Id, P => P.Id2, (R,P) => R.Id)
.FirstOrDefault();
混合语法(不幸的是,查询语法中没有 FirstOrDefault
运算符的等价物):
Guid? guid = (from R in Table1
join P in Table2
on R.Id equals P.Id2
where R.Name == 'blah blah'
select R.Id).FirstOrDefault();
关于c# - 试图获得指南?通过 linq,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18360901/