如何使用LINQ根据条件从单个数据表中查找重复的列值

时间:2018-07-06 11:28:48

标签: c# asp.net linq

enter image description here

基于Artname字段中的不同值,我想获取常见的LND_ISO值。

  1. TestCPCN-红色-AD,AG
  2. TestCPCN-Green- AD
  3. TestCPCN-Blue- AD,AG

所以通常的值是AD [结果是AD]

如何通过LINQ实现。

2 个答案:

答案 0 :(得分:1)

GroupBy上使用Artname进行简单分组,然后在合并的结果上相交以获得输出

var result = data.GroupBy(
    p => p.Artname, 
    p => p.LND_ISO,
    (key, g) => new { Artname = key, LND_ISO = g.ToList() }).ToList();

var output = result[0].LND_ISO;
foreach(var item in result)
{
   output = output.Intersect(item.LND_ISO);
}

答案 1 :(得分:0)

您可以这样做:

var groups = from r in rows
    group r by r.Artname
    into g
    select g;

var itemsInAllGroups = (from p in rows
    where groups.All(g => g.Any(item => item.LND_ISO == p.LND_ISO))
    select p.LND_ISO).Distinct().ToList();