Ich habe folgende Customer
Klasse:GroupBy alle Felder und Count
public class Customer
{
public string Name {get; set;}
public string Email {get; set;}
public string City {get; set;}
}
Kunden Sammlung
List<Customer> customers = //assigned range of customers
Jetzt habe ich zum Gruppieren von allen Bereichen. Ich möchte keine einzelnen Felder auswählen. In meinem tatsächlichen Szenario läuft es dynamischer, daher kann ich die Felder nicht vordefinieren.
Von diesem customers
Objekt Ich brauche eine Matrix wie zu konstruieren
Name | Email | City | count
AB [email protected] ss 3
CB [email protected] ss 2
EF [email protected] ss 34
ek g.com we 84
Ich habe versucht, diesen Weg gehen. Erweiterung Methode zur Gruppe von mehreren Spalten
public static IEnumerable<GroupResult> GroupByMany<TElement>(
this IEnumerable<TElement> elements, List<string> groupSelectors)
{
var selectors =
new List<Func<TElement, object>>(groupSelectors.Count);
foreach (var selector in groupSelectors)
{
LambdaExpression lambdaExpression =
System.Linq.Dynamic.DynamicExpression.ParseLambda(typeof(TElement), typeof(object), $"it[\"{selector}\"]");
selectors.Add((Func<TElement, object>) lambdaExpression.Compile());
}
return elements.GroupByMany(selectors.ToArray());
}
und nennen Sie es wie
customers.GroupByMany(displayFields);
Problem ist, ich bin die Ergebnisse als verschachtelte Gruppen bekommen
public class GroupResult
{
public object Key { get; set; }
public int Count { get; set; }
public IEnumerable Items { get; set; }
public IEnumerable<GroupResult> SubGroups { get; set; }
public override string ToString()
{
return $"{Key} ({Count})";
}
}
, die weg von dem, was ich wird brauche ich wieder.
Was haben Sie versucht? Bitte zeigen Sie Ihre Arbeit. – Soviut
Was ist die "Zählung" von? Bitte zeigen Sie, was Sie bisher versucht haben. Und was meinst du mit Matrix? Ist das ein C# -Objekt? –
Ich bin mir nicht sicher, was Sie hier fragen oder versuchen zu tun. Willst du sie nur ausgeben? –