Gibt es eine Möglichkeit, mehrere Schlüssel für die von LINQ bereitgestellte .ToLookup
-Funktion zu benötigen?ToLookup mit mehreren Schlüsseln
Ich gebe zu, dass dies auf den ersten Blick nicht intuitiv scheint, und ich erwarte, dass es keine Möglichkeit gibt, dies zu tun, aber ich hoffe, dass jemand einen Weg kennt.
Ich möchte grundsätzlich in der Lage sein, nach zwei Werten zu suchen, zum Beispiel einer string
und einer int
, und das Objekt mit diesen beiden Werten abrufen.
Beispiel
public class MyClass {
public string StringProp {get;set;}
public int IntProp {get;set;}
public object MoreData {get;set;}
}
public class Main {
public void Main() {
HashSet<MyClass> set = new HashSet<MyClass>();
set.Add(new MyClass {StringProp = "a", IntProp = 1, MoreData = null});
set.Add(new MyClass {StringProp = "c", IntProp = 4, MoreData = new object()});
set.Add(new MyClass {StringProp = "a", IntProp = 2, MoreData = "upupdowndown"});
set.Add(new MyClass {StringProp = "c", IntProp = 1, MoreData = string.Empty});
set.Add(new MyClass {StringProp = "c", IntProp = 4, MoreData = string.Empty});
// Using 'var' because I don't know how this would be defined.
// I recognize that this will not compile - but this is what I'm trying to do.
var lookup = set.ToLookup(x => x.StringProp && x.IntProp)
MyClass c = lookup["a", 1].First(); // Should return the first element
IEnumerable<MyClass> list = lookup["c", 4]; // Should return the 2nd and last elements
}
}
ich nicht sehen, wie das hilft. – DarthVader
Danke Gabe. Ich werde das ein wenig ausprobieren und Sie wissen lassen, wie es funktioniert. – Merwer