如何将Dictionary的LINQ查询重构为单个Lambda表达式
实现方案
你要的单条LINQ方法链写法可以直接用First()扩展方法完成,无需拆分Where+Select+ToList的组合:
// 确定Key=1一定存在的场景,直接写 var targetValue = myd.First(c => c.Key == 1).Value; // 如果要兼容Key不存在的场景,避免抛出异常可以用FirstOrDefault var targetValue = myd.FirstOrDefault(c => c.Key == 1).Value ?? "不存在匹配值";
替换到你的代码中,原来的取值+输出逻辑可以直接压缩为一行:
Console.WriteLine($"Desired output: {myd.First(c => c.Key == 1).Value}");
补充说明
- 如果你只是操作
Dictionary类型,更推荐直接用字典自带的索引器myd[1]或者TryGetValue()方法,性能远高于LINQ枚举查找:前者是O(1)时间复杂度,后者是O(n)时间复杂度。 - 示例中
First()方法的参数本身就是Lambda表达式,整个方法链调用就是单条语句,符合你的要求。
内容的提问来源于stack exchange,提问作者BrandonM
相关产品推荐
相关产品推荐

