0

我有这个

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

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

4

1 回答 1

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);
于 2013-05-05T09:32:03.467 回答