2009-08-18 74 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);