Ho una query che deve essere dinamica, penso che la maggior parte della mia sintassi sia corretta, ma non so come dargli il nome della colonna che voglio raggruppare. Ho provato alcuni approcci diversi e ricevo sempre un errore: "Non esiste alcuna proprietà o campo" nome "nel tipo" datarow "
IQueryable<Result> aggregate1 =
query1Data.Tables[0].AsEnumerable().AsQueryable()
.GroupBy("name", "it")
.Select<Result>("new(Key as Group, Sum(value)as Total)");
Suppongo di dover usare qualcosa come Field<string>("name")
ma non riesco a capirlo. Ho visto il problema su alcuni forum, ma nessuno sembra avere una risposta chiara su come aggirare il problema.
Non sono sicuro di capire esattamente cosa vuoi, ma ecco un piccolo frammento di codice che puoi usare come ispirazione:
var dataTable = new DataTable();
dataTable.Columns.Add("Name", typeof(String));
dataTable.Columns.Add("Value", typeof(Int32));
dataTable.Rows.Add("A", 1);
dataTable.Rows.Add("A", 2);
dataTable.Rows.Add("B", 3);
dataTable.Rows.Add("B", 4);
var aggregate = dataTable.AsEnumerable()
.GroupBy(row => row.Field<String>("Name"), row => dataRow.Field<Int32>("Value"))
.Select(group => new { Name = group.Key, Total = group.Sum() });
foreach (var row in aggregate)
Console.WriteLine(row.Name + " = " + row.Total);