如何使用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查询?
谢谢!
Dictionary
实现了KeyValuePair
的IEnumerable
,其中包含Key
和Value
属性:
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 Expression
和LINQ
的概念。您已使用Lambda Expression
。但如果你必须使用LINQ
,第一个条件是你正在使用的数据收集必须实现IEnumerable
接口,例如LIST<T>
现在把你的LINQ
代码写为:
var selectedOne = (from p in people
select p
where p.Key == "1").Single()