检查对和三配件

时间:2013-05-05 09:05:53

标签: c# linq

我有这个

public class Karte
{
    public string value = "";
    //
}

public class mainclass()
{
  bool whatever()
  {
    List<Karte> Karten = new List<Karte>();
    //Add Objects of Karte to Karten with different entries for value
    if (testing)
      return true;
    else
      return false;
  }
}

在测试中,如果有3次相同的字符串和2次另一个字符串,我希望它返回true。

示例:

Karte-object-number,value
1,1
2,A
3,A
4,7
5,A
6,7
7,9
8,A

应该返回true(AAA和77)

Karte-object-number,value
1,1
2,A
3,A
4,A
5,A
6,A
7,9
8,A

应该返回true(AAA和AA)

Karte-object-number,value
1,1
2,A
3,A
4,7
5,M
6,7
7,9
8,F

应该返回false。 (AA和77,两对,但没有AAA或777)

1 个答案:

答案 0 :(得分:2)

首先,您必须按每个值进行分组并计算出现次数:

var groups = karten
          .GroupBy(k => k.value)
          .Select(group => new { Key = group.Key, Count = group.Count() })
          .ToList();

现在您可以应用您的测试逻辑:

bool testing = (groups.Count == 1 && groups[0].Count >= 5) || (groups.Count >= 2 && groups[0].Count + groups[1].Count >= 5);