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处
}
}
=================================================================
这个方法显然很小学生,有哪位大神有更好的方法???
学习了下述代码,利用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处
}
}
=================================================================
这个方法显然很小学生,有哪位大神有更好的方法???
...全文
相关推荐
Linq两个List集合取交集的实现
如果需要去除重复项,可以在调用`Intersect`后使用`Distinct`方法。总结来说,LINQ提供的`Intersect`方法是获取两个List集合交集的有效工具。
LINQ排除重复的list 免费下载
#### 四、总结本文详细介绍了如何使用LINQ中的`Distinct()`方法去除列表中的重复项,并通过具体的代码示例进行了分析。掌握了这种方法后,开发者可以在日常工作中更加高效地处理数据集合问题。
LINQ实战+LINQ高级编程 2本电子书 中文
**并行查询(Parallel LINQ, PLINQ)**:利用多核处理器并行执行查询,提升性能,但需注意线程安全问题。4.
Linq 之路,通俗易懂的讲解Linq用法
**Documents、Declarations和Namespaces**:讲解了如何处理XML文档中的声明和命名空间问题。5.
c#去除string中的重复项的简单方法
还有一种方法是利用 LINQ(Language Integrated Query)的特性,通过`Distinct()`函数去除重复项:```csharpusing System;using System.Linq


