如何使用lambda表达式来选择特定项

本文关键字:选择 何使用 lambda 表达式 | 更新日期: 2023-09-27 18:28:10

我只是在学习lambda表达式,我想使用lambda表达式来选择任何特定的项。在这里,我想选择一个key=1的人,这样selectedOne="sanjay"

    var people = new Dictionary<int, string>();
    people.Add(1, "sanjay");
    people.Add(2, "roshan");
    people.Add(3, "neejesh");
    people.Add(4, "deep");   
    var selectedOne = people.Select(x => x.Key == 1);

我应该如何构造lambda查询?

谢谢!

如何使用lambda表达式来选择特定项

Dictionary实现了KeyValuePairIEnumerable,其中包含KeyValue属性:

var selectedOne = people.First(x => x.Key == 1).Value;

您使用了错误的LINQ方法。Select用于投影一些值(将一个值转换为另一个值)。您需要进行筛选(通过指定的关键字进行搜索)。

但是。。。使用LINQ来选择字典键是不有效的。更好的是:

var selectedOne = people[1];

它是O(1)对O(n)的摊销——巨大的差异。

您想使用Where调用将结果集筛选到您想要的人,然后使用Select定义您想要的结果,例如

var selectedOne = people.Where(x => x.Key == 1).Select(x => x.Value).First();

按照pwas

的建议,通过字典索引执行查找会更有效率

代码应该类似于:

var selectedOne = people.Single(x => x.Key == 1);

这将为您提供键值对。如果你只想要字符串:

var selectedOne = people.Single(x => x.Key == 1).Value;

看起来您混合了Lambda ExpressionLINQ的概念。您已使用Lambda Expression。但如果你必须使用LINQ,第一个条件是你正在使用的数据收集必须实现IEnumerable接口,例如LIST<T>现在把你的LINQ代码写为:

var selectedOne = (from p in people
                  select p
                  where p.Key == "1").Single()