C# datatable 中有 "列1","列2",“列3”"列4" 过虑重复 ,只有 "列1" "列 2"的值 都重复了 才算过滤
用了toTable(true,"列1""列2");过滤了。但是它只返回"列1"“列2”两列,怎么返回所有过虑后的列?("列1","列2",“列3”"列4")...
用了toTable(true,"列1""列2"); 过滤了。但是它只返回"列1"“列2”两列 ,怎么返回所有过虑后的列?("列1","列2",“列3”"列4" )
展开
1个回答
2016-06-03
展开全部
直接用ToTable(true)就可以了。
toTable(true,"列1""列2"); 表示去重复,结果保留“列1”和“列2”。
ToTable(true)表示去重复,保留所有列。
toTable(true,"列1""列2"); 表示去重复,结果保留“列1”和“列2”。
ToTable(true)表示去重复,保留所有列。
追问
toTable(true,"列1""列2");是表示 列1 列2 同时重复 才算重复。并返回列1 列2 我试过很多次啦
toTable(true) 这个是要所有列都相同 才算重复吧? ,我是要行中 列1 和列2 想同的就算是重复的
列1列2 列3
1 2 3
2 2 3
1 2 6
第一行和第三行是重复的 去掉第三行 用toTable(true) ,不行
追答
那就不用DataView,用Linq to object:
DataTable dt = new DataTable();
dt.Columns.Add("列1", typeof(int));
dt.Columns.Add("列2", typeof(int));
dt.Columns.Add("列3", typeof(int));
dt.Rows.Add(1, 2, 3);
dt.Rows.Add(2, 2, 3);
dt.Rows.Add(1, 2, 6);
DataTable result = dt.AsEnumerable().Distinct(new RowComparer()).ToTable();
class RowComparer : IEqualityComparer<DataRow>
{
#region IEqualityComparer<DataRow> 成员
public bool Equals(DataRow x, DataRow y)
{
return (int)x["列1"] == (int)y["列1"] && (int)x["列2"] == (int)y["列2"];
}
public int GetHashCode(DataRow row)
{
return 0;
}
#endregion
}
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询