我有一个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 }) GroupBy(x=> new { x.Column1, x.Column2 }, (key, group) => new Key1 = key.Column1, Key2 = key.Column2, Result = group.ToList() });
【玩转 GPU】有奖征文
精美礼品等你拿!
如果需要筛选副本,请尝试以下查询:
var dtUniqueResults = dtResult.AsEnumerable() .GroupBy(n => new Id = n.Field<string>("id"),