c# - 试图获得指南?通过 linq

标签 c# .net linq

我需要从 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/

相关文章:

c# - 如何在mvc中将复杂的键值参数从 View 传递到 Controller ?

c# - 不等待消息框的结果

c# - 如何编写 LINQ 查询来获取过去 7 天内的内容?

.net - 如何在没有窗口句柄的情况下使用 RegisterDeviceNotification?

.net - 使用字典是处理错误的有效方法吗?

linq - 在这种简单的情况下,我应该坚持使用 LINQ 吗?

linq - Entity Framework 4 (CTP 5) 并发

javascript - 如何将 C# 字符串数组与 Angular ng-init 一起使用?

c# - 如何在 C# 中更改 Visio 形状中的文本字体?

c# - Quartz.Net 调度器在本地工作但不在远程主机上