Ich verwende Dyanmic LINQ aus den VS2010-Codebeispielen, während ich versuche, einen LINQ-Groupby-Ausdruck zu erstellen. Ich möchte dem Benutzer die Möglichkeit geben, zur Laufzeit die zu gruppierenden Eigenschaften sowie den Zeitraum der Gruppierung (Jahr, Quartal, Monat) auszuwählen. Aus diesem Grund habe ich mich für Dynamic LINQ entschieden.
Hier ist ein Beispiel meiner Daten:
ID | Einkommen | OrDate |
1 | 900000 | 1-1-2000 |
2 | 180000 | 1-9-2000 |
3 | 300000 | 3-2-2002 |
4 | 100000 | 2-7-2003 |
und der Ausdruck, den ich baue, sieht aus wie:
dataSource.GroupBy("new (OrDate.Year as Year, OrDate as Month)", "Income").Select("new (Key.Year, Key.Month, Sum(Value) as Income)");
Dies funktioniert NUR gut. Ich kenne den genauen Typ der Liste. Beispiel: List<Product>
oder List<Order>
. Mein Problem ist, dass der dataSource-Typ zur Kompilierungszeit eine List<object>
. Aus diesem Grund erhalte ich eine Ausnahme, wenn ich die Liste mit Bestellungen oder Produkten fülle:
No generic method 'GroupBy' on type 'System.Linq.Queryable' is compatible with the supplied type arguments and arguments. No type arguments should be provided if the method is non-generic.
Kann mir jemand sagen, wie dies vermieden werden kann und die Quellliste trotzdem als List<object>
?
Versuche dies -
For group by in LinQ
var x = t.GroupBy(gp => gp.Name).OrderBy(group => group.Key).Select(group => Tuple.Create(group.Key, group.Count()));
Finden Sie bitte