データ操作の領域では、特定の基準に基づいてデータを集計することが必要になることがよくあります。このような状況の 1 つは、オブジェクトのリスト内の重複をカウントする必要がある場合に発生します。 LINQ (言語統合クエリ) は、このタスクに洗練されたソリューションを提供します。
var q = from x in inventory group x by x into g let count = g.Count() orderby count descending select new { Count = count, gameName = g.Key.gameName, gameID = g.Key.gameID };
このクエリはカウントと重複する各名前にはゲーム ID が省略されます。これに対処するには、アプローチを変更する必要があります。
var q = from x in inventory group x by x.gameName into g let count = g.Count() orderby count descending select new { Count = count, gameName = g.Key, gameID = g.First().gameID };
ゲーム名に基づいてオブジェクトをグループ化するプロパティを使用すると、同じ名前のオブジェクトを効果的に集約できます。
gameID = g.First().gameID
同じ名前のオブジェクトは異なる ID を持つ可能性があるため、First() を使用してグループ内の最初のオブジェクトの ID を取得します。これにより、一意のゲーム名ごとに ID が確保されます。
完成したコード スニペット内に上記のロジックをカプセル化:
var inventory = new List<game>(); // ... additional code for populating the inventory list var q = from x in inventory group x by x.gameName into g let count = g.Count() orderby count descending select new { Count = count, gameName = g.Key, gameID = g.First().gameID }; // ... additional code for displaying the results
次に、クエリ各一意のゲーム名のカウント、ゲーム名、ゲーム ID が重複数の多い順に正しく表示されます。
以上がLINQ が C# リスト内の重複オブジェクトを効率的に数えて要約するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。