本文介绍了如何在DataTable.Select(Expression)中使用SELECT GROUP BY?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我尝试通过从每个组中选择第一行来删除重复的行。 例如
I try to remove the duplicate rows by select a first row from every group. For Example
PK Col1 Col2 1 A B 2 A B 3 C C 4 C C我想要一个回报:
PK Col1 Col2 1 A B 3 C C我尝试了以下代码,但没有起作用:
I tried following code but it didn't work:
DataTable dt = GetSampleDataTable(); //Get the table above. dt = dt.Select("SELECT MIN(PK), Col1, Col2 GROUP BY Col1, Col2);推荐答案
DataTable 的选择方法只支持简单过滤表达式,如 {field} = {value} ,它不支持复杂表达式,更不用说SQL / Linq语句。
DataTable's Select method only supports simple filtering expressions like {field} = {value}. It does not support complex expressions, let alone SQL/Linq statements.
然而,您可以使用Linq扩展方法来提取 DataRow s的集合,然后创建新的 DataTable 。
You can, however, use Linq extension methods to extract a collection of DataRows then create a new DataTable.
dt = dt.AsEnumerable() .GroupBy(r => new {Col1 = r["Col1"], Col2 = r["Col2"]}) .Select(g => g.OrderBy(r => r["PK"]).First()) .CopyToDataTable();更多推荐
如何在DataTable.Select(Expression)中使用SELECT GROUP BY?
发布评论