Ich möchte die Ergebnisse einer Where-Klausel auf einer Liste und nehmen Sie dann diese Ergebnismenge und erstellen Sie nur einen neuen Typ, der alle seine Felder aus Aggregaten der ursprünglichen Abfrage erstellt hat . Gibt es also, wenn man das untenstehende grundlegende Beispiel anwendet, die beiden Linq-Anweisungen in einem zu kombinieren? Wenn das Original keine Zeilen enthält, sollte es null zurückgeben. Vielen Dank!Linq - Wie die Ergebnisse einer anderen Abfrage aggregieren
class Foo
{
public int A { get; set; }
public int B { get; set; }
}
List<Foo> lst = GetFooList();
var q = (from f in lst
where f.A > 3
select f).ToList();
if (q.Count != 0)
{
var qq = new
{
MinA = q.Min(l => l.A),
MaxB = q.Max(h => h.B),
};
// now do something with qq
}
Update: Für meine Situation hat der ursprüngliche Satz viele Elemente aber nach der where-Klausel ist die Ergebnismenge sehr klein. Das mehrmalige Aufzählen über den zweiten Satz sollte kein Problem darstellen. Auch muss ich zuerst und zuletzt auf dem Set verwenden, um einen Wert aus diesen Datensätzen zu erhalten. Die Gruppe nach Antwort funktioniert am besten für mich. Der aggregierte Weg ist sehr interessant und ich denke, dass er eine andere Verwendung dafür hat.
Es ist relativ kompliziert, weil durch die Zeit, die Sie getestet haben, ob es ein Element ist, Du hast das erste Element verbraucht. Ich vermute, es gibt einen Weg dahin, aber es ist wahrscheinlich ein bisschen hacky ... Wird mehr denken. –