我有一个表格,其中每一行都使用版本号。现在,我只想拥有类别中版本号最高的那些记录。但是也有一些记录带有负数,准确地说是-1。应该选择这些。
一个例子
Version number|Categegory|Name
1 |SCHU |Shoes
2 |SCHU |new shoes
1 |HAND |Gloves
2 |HAND |New gloves
-1 |HAND |New gloves V2
我想要一个打印以下内容的列表。
2 |SCHU|new shoes (Secundary, Selected because max VersionNo)
-1|HAND|New Gloves V2 (Primary, Selected because Special Version)
由www.DeepL.com/Translator
翻译答案 0 :(得分:2)
您可以使用表达式在-1
时修改排序值,然后选择最高值:
var ans = dt.AsEnumerable()
.GroupBy(r => r.Field<string>("Category"))
.Select(rg => rg.OrderByDescending(r => r.Field<int>("VersionNumber") == -1 ? Int32.MaxValue : r.Field<int>("VersionNumber")).First());
请注意,结果为IEnumerable<DataRow>
,而不是DataTable
。如果要创建一个包含结果行的新CopyToDataTable
,则可以使用扩展名DataTable
。