Ich habe eine Reihe von generischen Klassen, die alle wie folgt aussehen:LINQ Spiel zwei Listen innerhalb einer select-Anweisung
public class MyList<T0, T1, T2>
{
public T0 Column0;
public T1 Column1;
public T2 Column2;
}
... und ich sie in zwei Listen verwenden, TempResults (Column0-Column15)
und Disagio (Column0-Column3)
. Jetzt möchte ich eine neue Liste erstellen, die 3 Spalten von TempResults und eine von Disagio enthält, wobei ich Disagio.Column1
mit TempResults.Column13
übereinstimmen muss und dann Disagio.Column2
zurückgeben muss (es gibt immer entweder 0 oder 1 Übereinstimmungen). Der gesamte Code:
EndResults = TempResults
.Select(sel => new MyList<string, string, string, string>
{
Column0 = sel.Column0,
Column1 = //ugly part goes here, see below
Column2 = sel.Column1,
Column3 = sel.Column12
})
.DistinctBy(x => x.Column0)
.ToList();
Was ich bisher versucht habe:
//Returns an empty list
Disagio.Where(x => x.Column1 == sel.Column13).First().Column2.ToString()
//It returns something, but I doubt it's correct
Disagio.Join(TempResults, x => x.Column1, y => y.Column13, (a, b) => a).First().Column2.ToString()
Ich konnte das Problem mit einer Schleife lösen, aber ich möchte wirklich nicht zu. Die Listen sind nie zu lang, Speicher und Geschwindigkeit sind in diesem Fall weniger wichtig als Lesbarkeit.
'Disagio' ist eine Liste dieser' Disagio' Objekte? – Kolky
Disagio sieht so aus: 'List> Disagio' –