尝试使用Linq查找收集异常

时间:2018-04-17 13:33:41

标签: c# linq

鉴于以下数据收集,我正在寻找一个查询或一组查询来返回以下具有多于或少于三个组的键(例如密钥C)和在组之间没有相等计数的密钥(如键B)

Key |    Group |    Count
------------------------- 
  A |        1 |        2
  A |        2 |        2
  A |        3 |        2
  B |        1 |        3
  B |        2 |        3
  B |        3 |        2
  C |        1 |        1
  C |        3 |        1 

1 个答案:

答案 0 :(得分:-1)

当你有三个计数时,你可以定义不等于什么意思:1,2,3。计数1是正确的数字,其中2和3不等于1。或者2是正确的数字,其中1和3不等于2。或者3是正确的答案,其中1和2不等于3。无论如何这里是linq:

            DataTable dt = new DataTable();
            dt.Columns.Add("Key", typeof(string));
            dt.Columns.Add("Group", typeof(int));
            dt.Columns.Add("Count", typeof(int));

            dt.Rows.Add(new object[] {"A", 1,2});
            dt.Rows.Add(new object[] {"A", 2,2});
            dt.Rows.Add(new object[] {"A", 3,2});
            dt.Rows.Add(new object[] {"B", 1,3});
            dt.Rows.Add(new object[] {"B", 2,3});
            dt.Rows.Add(new object[] {"B", 3,2});
            dt.Rows.Add(new object[] {"C", 1,1});
            dt.Rows.Add(new object[] {"C", 3,1});

            var groups = dt.AsEnumerable()
                .GroupBy(x => x.Field<string>("Key")).Select(x => x.GroupBy(y => y.Field<int>("Count")).ToList()).ToList();