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" ) 展开
 我来答
匿名用户
2016-06-03
展开全部
直接用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
}

推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式