linq 取部分重复项的问题
Id为自增长值,永远不会重复,而且后续的代码中需要用到Id值。
学习了下述代码,利用group by分组取count值得到Code 和Name均重复的行。
可是这里无法得到 Id。
DataTable dt = this.JsonToDataTable("["
+ "{\"Id\":\"1\",\"Code\":\"SortId\",\"Name\":\"SortId\"},"
+ "{\"Id\":\"2\",\"Code\":\"SortCode\",\"Name\":\"编号\"},"
+ "{\"Id\":\"3\",\"Code\":\"SolutionName\",\"Name\":\"名称\"},"
+ "{\"Id\":\"4\",\"Code\":\"SortId\",\"Name\":\"SortId\"},"
+ "{\"Id\":\"5\",\"Code\":\"SortId\",\"Name\":\"SortId\"},"
+ "{\"Id\":\"6\",\"Code\":\"SortId001\",\"Name\":\"SortId\"}]");
DataTable dtSort = dt.Clone();
int i = 0;
var query = from t in dt.AsEnumerable()
group t by new { t1 = t.Field<string>("Code"), t2 = t.Field<string>("Name") } into m
select new
{
code = m.Key.t1,
name = m.Key.t2,
rowcount = m.Count()
};
foreach (var q in query)
{
//q.rowcount可以获取到一共有几条重复数据,比如在该例子中q.rowcount就是3
if (q.rowcount > 1)
{
//有重复
}
}
=======================================================================
由于第一天接触linq ,只好自己瞎蒙。
最终发现代码小做改变可以得到Id:
select new
{
id = m, //====》改变处
code = m.Key.t1,
name = m.Key.t2,
rowcount = m.Count()
};
foreach (var q in query)
{
//q.rowcount可以获取到一共有几条重复数据,比如在该例子中q.rowcount就是3
if (q.rowcount > 1)
{
//有重复
q.id.ElementAt(0)["Id"]
q.id.ElementAt(1)["Id"]
q.id.ElementAt(2)["Id"] //==========>得到Id处
}
}
=================================================================
这个方法显然很小学生,有哪位大神有更好的方法???