c# - 从 LINQuery 获取单个元素?

标签 c# linq

所以我刚开始使用 LINQ,它看起来很有用,但我在从查询中获取值时遇到了一些问题。

这是我的原始代码,但我想用 LINQ 替换:

foreach (LocationModel loc in locationList)
{
    if (loc.Name.Equals(location, StringComparison.CurrentCultureIgnoreCase))
    {
        locationId = loc.Id;
        break;
    }
}

这是我为做同样的事情而编写的 LINQ:

var matchQuery = from loc in locationList
                 where loc.Name.ToLowerInvariant() == location.ToLowerInvariant()
                 select loc.Id;

现在如何从 matchQuery 中实际获取 int Id?

最佳答案

如果您只想要第一项,则使用 FirstOrDefault:

 var id = (from loc in locationList
           where loc.Name.ToLowerInvariant() == location.ToLowerInvariant()
           select loc.Id).FirstOrDefault();

或者在方法语法中:

var id = locationList.FirstOrDefault(loc => loc.Name.ToLowerInvariant() == location.ToLowerInvariant())?.Id;

关于c# - 从 LINQuery 获取单个元素?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43785947/

相关文章:

c# - 如何从 xsd 生成 .NET 4.0 类?

c# - 从任何类型的文档中获取文本

c# - 没有任何内容添加到对象列表中

c# - LINQ 如何查询一个值是否在范围列表之间?

c# - Linq:前瞻性条件

c# - 包含多个条件的 LINQ 条件 Where 子句

C# 应用程序设置不使用自定义类保存

C# 不等待异步方法完成

C# WPF 为列表中的每个对象动态创建一个 GUI 元素

linq - 如何使用Lambda表达式查询嵌套列表