2009-08-18 13 views
2

ich eine LINQ-Abfrage haben zu greifen, die alle Werte innerhalb eines Dictionary zurückgibt, abhängig etwas:Lambda Ausdruck alle Werte in einem Wörterbuch

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

shape.Decorators ist ein

Dictionary<Shape, DecoratorLayoutStyle> 

Ist gibt es etwas terser und/oder kann ich eine kombination von lambdas oder sowas benutzen?

Antwort

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

Ich denke, deine ist genauso gut.

+0

Schön für Anfänger wie mich ... –

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); 

Glaubst du, das ist knappere?

Persönlich bevorzuge ich die Abfragesyntax, wenn ich mehr als einen LINQ-Operator habe, können alle Operatoren, die ich benutze, zu ihm übersetzt werden.

3

Das sieht mir viel zu knapp, ich denke, Sie könnten die Erweiterungsfunktionen anstelle der von/select linq Syntax verwenden, aber das wäre nicht zu unterschiedlich.

Mehr imporantly, ich bin nicht sicher, dass Sie wollen knappere. Das aktuelle Format ist sehr gut lesbar und dokumentiert genau, was Sie vorhaben.

+1

ich stimme zu, danke – geejay

0

Nur um anders zu sein.

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