繁体   English   中英

Lambda表达式可以获取Dictionary中的所有值

[英]Lambda expression to grab all values inside a Dictionary

我有一个LINQ查询,它返回一个Dictionary中的所有值,条件是:

var apps =
from entry in shape.Decorators
where entry.Value == DecoratorLayoutStyle.App
select entry.Key;

shape.Decorators是一个

Dictionary<Shape, DecoratorLayoutStyle>

是否有更简洁的东西,和/或我可以使用lambdas或其他东西的组合?

var apps = shape.Decorators
                .Where(x=>x.Value == DecoratorLayoutStyle.App)
                .Select(x=>x.Key);

我觉得你的一切都很好。

这看起来很简洁,我想你可以使用扩展函数而不是from / select linq语法,但这不会太大。

更加咄咄逼人,我不确定你是否想要更加温和。 当前格式非常易读,并且清楚地记录了您正在尝试执行的操作。

var apps = shape.Decorators
                     .Where(e => e.Value ==  DecoratorLayoutStyle.App)
                     .Select(e => e.Key);

你觉得这更老了吗?

我个人更喜欢查询语法,当我有多个LINQ运算符时,我使用的所有运算符都可以转换为它。

var apps = Shape.Decorators.Where(x => x.Value == DecoratorLayoutStyle.App)
                           .Select(x => x.Key);

只是为了与众不同。

var apps = shape.Decorators.Keys
  .Where(k => shape.Decorators[k] == DecoratorLayoutStyle.App);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM