2009-08-18 75 views
2

我有一个LINQ查询,其在东西返回所有值的字典里面,条件内的所有值:Lambda表达式抢词典

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

shape.Decorators是

Dictionary<Shape, DecoratorLayoutStyle> 

是有什么东西,和/或我可以使用lambda或什么的组合?

回答

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

我认为你们一样好。

+0

对像我这样的初学者来说很不错... – 2012-09-15 09:34:38

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

你认为这是更简洁?

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

3

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

更加猥亵,我不确定你想要 terser。目前的格式非常可读,并且清楚地记录了你正在尝试做的事情。

+1

我同意,谢谢 – geejay 2009-08-18 14:59:35

0

只是为了不同。

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