我有一个需要动态的查询,我认为我的大多数语法都是正确的,但我不知道如何给它分组我想要分组的名称。我尝试了一些不同的方法,我总是得到一个错误 - “datarow'类型中没有”属性或字段'名称
IQueryable<Result> aggregate1 =
query1Data.Tables[0].AsEnumerable().AsQueryable()
.GroupBy("name", "it")
.Select<Result>("new(Key as Group, Sum(value)as Total)");
我认为我必须使用Field<string>("name")
这样的东西,但我无法弄明白。我已经在一些论坛上看到了这个问题,但似乎没有人能够明确回答如何解决这个问题。
答案 0 :(得分:0)
这是你想要做的吗?
var aggregate1 =
query1Data.Tables[0].AsEnumerable().AsQueryable()
.GroupBy(row => row.Field<string>("name"), row => row.Field<int>("it"))
.Select(g => new { Group = g.Key, Total = g.Sum() });
答案 1 :(得分:0)
我不确定我到底知道你想要什么,但这里有一小段你可以用作灵感的代码:
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);