1

文字列の大きなリストがあります。リストに正確に 5 回複製された文字列が含まれているかどうかを知りたいです。

アイテムが 6 回以上重複している場合、知りたくありません。

リストを1つずつ調べて、各文字列のインスタンスの数を数えるよりも良い方法に違いないと思いますか?

彼らはそれを行うための簡単なLINQの方法ですか?

4

5 に答える 5

4

カウントを行うには、リスト全体を少なくとも 1 回反復処理する必要があることは明らかであるため、パフォーマンスの面で優れているものはありません。ただし、LINQ では、より少ないコードでうまくいくことができます。それは事実です。このような何かがうまくいくはずです:

var listOfFiveTimers = list.GroupBy(s => s)
                           .Where(g => g.Count() == 5)
                           .Select(g => g.Key)
                           .ToList();
于 2013-08-02T10:03:43.880 に答える
2
stringListName.GroupBy(x => x).Any(x => x.Count() == 5);

を使用してテスト

 var stringListName = new string[] { "a", "a", "a", "a", "a", "b" };
于 2013-08-02T10:01:01.520 に答える
1
 bool duplicated5times = list.GroupBy(x=>x).Any(x=>x.Count() == 5);
于 2013-08-02T10:01:19.037 に答える
0
List<string> l = new List<string>();
    l.Add("a");
    l.Add("a");
    l.Add("a");
    l.Add("b");
    l.Add("b");
    l.Add("b");
    l.Add("b");
    l.Add("b");
    l.Add("c");
    l.Add("c");
    l.Add("c");
    l.Add("c");
    l.Add("c");
    l.Add("c");

    l.GroupBy
    (
        x => x
    )
    .Select 
    (
        x => 
        new
        {
            x.Key,
            count = x.Count ()
        }
     )
     .Where 
     (
        x => x.count==5
     );
于 2013-08-02T10:01:13.303 に答える
0

綺麗じゃないけどこれならいける

static void Main(string[] args)
{
    var items = new[] {1, 1, 1, 1, 1, 3, 2, 1, 5, 2};

    var over = items.Distinct().ToList().Where(i=>items.Where(it => it == i).Count() > 5);
    Console.Read();
}
于 2013-08-02T10:03:53.803 に答える