我有一个DataTable (dtResult),它有4个字段,id、store、sku和qty。不幸的是,我想删除的DataTable中有很多重复项(qtys是diff,但其他字段是相同的)。
我想按id asc、store asc、sku asc和group by id、store和sku对DataTable进行排序,这样我就有了一个唯一记录的列表。
理想情况下,我希望用查询的结果覆盖现有的DataTable,而qty对于所有内容都可以是0。我有这个类型,目前我正在把它放到一个新的DataTable中:
var dtUniqueResults = dtResult.AsEnumerable()
.OrderBy(r => r.Field<string>("id"))
.ThenBy(r => r.Field<string>("store"))
.ThenBy(r => r.Field<string>("sku"))
.CopyToDataTable();我不知道怎么和LINQ分组。我想我需要添加这样的东西,但它不起作用。
var dtUniqueResults = dtResult.AsEnumerable()
.GroupBy(n => n.Field<string>("id"),
n => n.Field<string>("store"),
n => n.Field<string>("sku")
)
.OrderBy(r => r.Field<string>("id"))
.ThenBy(r => r.Field<string>("store"))
.ThenBy(r => r.Field<string>("sku"))
.CopyToDataTable();我读过很多帖子,我看到了几种方法。然而,似乎这两项建议最多的是这两项,但它们似乎如此不同,使我更加困惑。
GroupBy( x => new { x.Column1, x.Column2 })
AND
GroupBy(x=> new { x.Column1, x.Column2 }, (key, group) => new
{
Key1 = key.Column1,
Key2 = key.Column2,
Result = group.ToList()
});发布于 2022-05-04 09:46:36
如果需要筛选副本,请尝试以下查询:
var dtUniqueResults = dtResult.AsEnumerable()
.GroupBy(n => new
{
Id = n.Field<string>("id"),
Store = n.Field<string>("store"),
Sku = n.Field<string>("sku")
}
)
.SelectMany(g => g.Take(1)) // get from group only one record
.CopyToDataTable();https://stackoverflow.com/questions/72110438
复制相似问题