私は2つのプロパティを持つクラスを持っています。2つのレベルの配列でC#でオーダーする
public class Result{
public User User {get;set};
public List<Game> Games {get; set;}
}
私は、各メンバーのために、データベースからデータを取得し、各メンバーは、いくつかのゲームで賭けを取得foreachループを持っています。
var results = new List<Result>();
foreach(var member in members){
//Get games from database
List<Game> games = gamesFromDatabase;
results.Add(new Result{ User = member, Games = games});
}
結果リストはこのようになります。
newResults[0].Member = { Id: 1, Name: David}
newResuts[0].Game = {GameId: 80, Points:8}
newResults[0].Member = { Id: 1, Name: Mark}
newResuts[0].Game = {GameId: 80, Points:7}
:
results[0].Member = { Id: 1, Name: David}:
results[0].Games = [{GameId: 80, Points:8}, {GameId: 81, Points: 3},...
results[1].Member = { Id: 2, Name: Mark}:
results[1].Games = [{GameId: 80, Points:7}, {GameId: 81, Points: 8},...
results[2].Member = { Id: 3, Name: Jake}:
results[2].Games = [{GameId: 80, Points:5}, {GameId: 81, Points: 10},...
私はので、私はマークは次のようになりますID = 80の新しいリストをゲームでわずか5ポイントを持っていることを示すことができるその中のすべてのユーザーが、一つだけのゲームを持っている配列をしたいです
受賞者が最高点を持つように注文します
私はこれをC#の 'group by'ステートメントで行うことはできますか?それとも、それは次の配列を作る別のスマートな方法ですか?
ユーザーのpropertiの結果配列とゲームの配列のaグループを使ってグループを作ることはできますか?
この場合、新しいリストを取得するには、すべてのゲームを繰り返す必要があります。私はGameIdのグループがそれをやるべきだと思ったが、それは不可能かもしれない。私は、ユーザーが各ゲームのどの場所にいるのかを示したいと言及していませんでした。たとえば、gameId = 80のときにDavidが1位になりますが、次の試合ではDavidが3位に立っていますが、81位と82位の2位のポジションポイントは3位にDavidもあります – user2227138