我有一个LINQ查询,它返回Dictionary中的所有值,条件是:
var apps =
from entry in shape.Decorators
where entry.Value == DecoratorLayoutStyle.App
select entry.Key;
shape.Decorators是
Dictionary<Shape, DecoratorLayoutStyle>
是否有更简洁的东西,和/或我可以使用lambdas或其他东西的组合?
答案 0 :(得分:6)
var apps = shape.Decorators
.Where(x=>x.Value == DecoratorLayoutStyle.App)
.Select(x=>x.Key);
我认为你的一切都很好。
答案 1 :(得分:3)
对我来说这看起来很简洁,我想你可以使用扩展函数而不是from / select linq语法,但这不会太差异。
更为棘手的是,我不确定你 想要 terser。目前的格式非常易读,并且清楚地记录了您正在尝试做的事情。
答案 2 :(得分:2)
var apps = shape.Decorators
.Where(e => e.Value == DecoratorLayoutStyle.App)
.Select(e => e.Key);
你认为这是更为严厉吗?
我个人更喜欢查询语法,当我有多个LINQ运算符时,我使用的所有运算符都可以转换为它。
答案 3 :(得分:1)
var apps = Shape.Decorators.Where(x => x.Value == DecoratorLayoutStyle.App)
.Select(x => x.Key);
答案 4 :(得分:0)
只是为了与众不同。
var apps = shape.Decorators.Keys
.Where(k => shape.Decorators[k] == DecoratorLayoutStyle.App);