我的内容中包含以下数据DataTable:
id vrn seenDate
--- ---- --------
1 ABC 2017-01-01 20:00:05
2 ABC 2017-01-01 18:00:09
3 CCC 2016-05-05 00:00:00
Run Code Online (Sandbox Code Playgroud)
我试图修改数据只显示vrn最近日期的值.这是我到目前为止所做的:
myDataTable.AsEnumerable().GroupBy(x => x.Field<string>("vrn")).Select(x => new { vrn = x.Key, seenDate = x.Max(y => y.Field<DateTime>("seenDate")) });
Run Code Online (Sandbox Code Playgroud)
我需要修改上面的内容以选择id字段(即我不想在这个字段上分组,但我希望将它包含在结果数据集中).
我不能放入x.Field<int>("id")该Select()部分,因为Field子句不存在.
您需要MaxBy与MoreLINQ等效的方法.
在标准LINQ中,可以使用OrderByDescending+ First调用进行模拟:
var result = myDataTable.AsEnumerable()
.GroupBy(x => x.Field<string>("vrn"))
.Select(g => g.OrderByDescending(x => x.Field<DateTime>("seenDate")).First())
.Select(x => new
{
vrn = x.Field<string>("vrn"),
id = x.Field<int>("id"),
seenDate = x.Field<DateTime>("seenDate"),
});
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
56 次 |
| 最近记录: |