3

同じ人がプレイした別のゲーム数を取得したいと思います。たとえば、リサは 1 つの別のゲームであるゲーム 7 でプレーします。Tim と Josh は両方ともゲーム 2 でプレーしますが、他の 3 つのゲームでもプレーします。Igrouping を使用してグループを比較し、値が同じかどうかを確認する方法はありますか?

public List<Game> DummyDataSet()
{
    dataSet.Add(new Game { GameNo = 1, FirstName = "Lisa" });
    dataSet.Add(new Game { GameNo= 2, FirstName = "Tim" });
    dataSet.Add(new Game { GameNo = 2, FirstName = "Josh" });
    dataSet.Add(new Game { GameNo = 3, FirstName = "Susan" });
    dataSet.Add(new Gamee { GameNo = 4, FirstName = "Tim" });
    dataSet.Add(new Gamee { GameNo = 5, FirstName = "Tim" });
    dataSet.Add(new Gamee { GameNo = 5, FirstName = "Josh" });
    dataSet.Add(new Game { GameNo = 6, FirstName = "Josh" });
    dataSet.Add(new Game { GameNo = 7, FirstName = "Lisa" });

    return dataSet;
}

public void numOfOtherMissions()
{
    List<Game> something;
    something = DummyDataSet();
    var grouped = something.ToLookup(x => x.GameNo, x => x.FirstName);
    foreach (IGrouping<int, string> item in grouped)
    {
        Console.Write(item.Key);
        Console.Write(": ");
        var result = grouped.ToLookup(z => FirstName);
        foreach (var value in item)
        {
            int games = 0;
            if(result == item)
            {
                othergames++;
            }
            else
            {
                othergames = 0;
            }
            Console.Write(value + " " + othergames);
            Console.WriteLine();
        }
    }
}
4

1 に答える 1

1

現在のルックアップを使用して必要な情報を取得することはできません。各人のゲーム数を取得するには、リストを再度クエリする必要があります。次に例を示します。

public void numOfOtherMissions(List<Game> something)
{
    var grouped = something.ToLookup(x => x.GameNo, x => x.FirstName);

    //Create a dictionary that holds the number of games for each person
    var gamesForPerson =
        something
        .GroupBy(x => x.FirstName)
        .ToDictionary(x => x.Key, x => x.Count());

    foreach (IGrouping<int, string> item in grouped)
    {
        Console.Write(item.Key);
        Console.Write(": ");

        foreach (var value in item)
        {
            //Get total number of games for this person and subtract 1
            var othergames = gamesForPerson[value] - 1;

            Console.Write(value + " " + othergames);
            Console.WriteLine();
        }
    }
}
于 2016-06-05T19:14:32.697 に答える