按多个列分组并跟踪不相同的跟踪值

时间:2017-05-09 14:17:19

标签: c# list linq object collections

我有一个包含类似项目的集合 InstId,PulseID和SheetID在其他项目之上。我想检查集合中的这些值(作为一个组合)是否是不同的,如果它们不是我想输出一个简单的跟踪消息“不唯一:InstId,PulseID和SheetID。

例如,

InstId  |   PulseID     |   SheetID     |
-----------------------------------------
    1   |   1           |   99          |
    1   |   1           |   98          |
    1   |   1           |   97          |
    2   |   1           |   99          |
    2   |   1           |   98          |
    3   |   1           |   97          |
    2   |   1           |   99          |
    2   |   1           |   95          |
    3   |   1           |   93          |


    I would like a trace message which will output the duplicatite like 
    InstId:2, PulseID: 1, SheetID: 99

我正在查看此链接,它似乎有意义,但我如何得到那些不独特的。 C# Linq Group By on multiple columns

2 个答案:

答案 0 :(得分:1)

你正在寻找这样的东西吗?

var result = IQueryableSource.GroupBy(x=>new {A=x.A, B=x.B, C=x.C}).Where(x=>x.Count()>1).Select(x=>x.Key);

答案 1 :(得分:1)

鉴于链接使用查询语法,

怎么样
var ans = from item in CollectionOfItems 
          group item by new { item.InstId, item.PulseID, item.SheetID } into ig
          where ig.Count() > 1
          select ig.Key;

如果您想要原始收藏品,也可以select ig.First()