DataTable选择表达式

时间:2012-11-30 09:53:05

标签: c# datatable

我想选择那些有重复的gesellschaft_id。我使用下面的代码。这是选择不同的gesellschaft_id。如何编写select表达式来选择那一行,哪些行,gesellschaft_id在数据表中有更多的值?

foreach (DataRow dr1 in table1.Rows)
        {
            DataRow[] drDup = table2.Select("('" + dr1[0].ToString() + "' = gesellschaft_id ) AND Count(gesellschaft_id)>1");

        }

3 个答案:

答案 0 :(得分:1)

public ArrayList FindDuplicateRows(DataTable dTable, string colName)
{
   Hashtable hTable = new Hashtable();
   ArrayList duplicateList = new ArrayList();

   //add duplicate item value in arraylist.
   foreach (DataRow drow in dTable.Rows)
   {
      if (hTable.Contains(drow[colName]))
         duplicateList.Add(drow);
      else
         hTable.Add(drow[colName], string.Empty); 
   }

      return duplicateList;
}

同样有用的重复查找和添加/删除链接:

http://www.dotnetspider.com/resources/4535-Remove-duplicate-records-from-table.aspx

http://www.dotnetspark.com/kb/94-remove-duplicate-rows-value-from-datatable.aspx

答案 1 :(得分:1)

您可以执行类似的操作,假设第一列是您要检查重复的列。这当然假设您有Linq可用。

var duplicateIds = table2.AsEnumerable()
                         .GroupBy(row = row[0])
                         .Where(x => x.Count() > 1);

如果您在问题中添加更多细节,那将会有所帮助。

答案 2 :(得分:1)

这将为您提供DataRowgesellschaft_id,其中var rowsWithADuplicateGesellschaftId = table1.Rows .Cast<DataRow>() .GroupBy(row => row["gesellschaft_id"]) .Where(group => group.Count() > 1) .ToArray(); 存在于多行中:

{{1}}