ToLookup mit mehreren Schlüsseln

Gibt es eine Möglichkeit, mehrere Schlüssel für die.ToLookup Funktion von LINQ bereitgestellt?

Ich gebe zu, dass dies zunächst nicht intuitiv zu sein scheint, und ich erwarte, dass es keinen wirklichen Weg 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 nach astring und einint, und rufen Sie das Objekt mit diesen beiden Werten ab.

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
      }
    }

Antworten auf die Frage(3)

Ihre Antwort auf die Frage