2

類似した複数の行を含むデータがあります。それらはゲームの最新の結果であり、たとえば、ゲームで得点された 3 つのゴールがある場合、それは 3 つのラインを意味します。

ここに画像の説明を入力

1ゲーム1セリフを区別したい。ただし、個別の行は最新でなければなりません (firstOrDefault?)

status=Confirmed と status=Open の両方を表示したいのですが、同じゲームを「Confirmed」と「Open」の両方で表示したくないのは明らかです

したがって、「ホームチーム」と「アウトチーム」の両方の列でグループ化したいと思います。しかし、同じゲームの場合、3 つのゴールがある場合は 3 つのラインを取得しますが、「最新のライン」が必要です。

誰かがこれで私を助けてくれますか?

4

1 に答える 1

3

次のようなことを試すことができます:

data.GroupBy(d => new { Hometeam = d.Hometeam, Outteam = d.Outteam })
    .Select(g => g.OrderBy(d => d.Status)
                  .ThenByDescending(d => d.GoalsHometeams + d.GoalsOutteams)
                  .First())
  1. チームの組み合わせによるグループ
  2. グループごとに、最新のステータスのエントリを検索します (アルファベット順でConfirmed前に来る)Open
  3. 同じステータスを持つ複数の場合 (つまり、複数Open)、合計スコアが最も高いエントリを検索します。
  4. グループごとに最初の結果 (最新である必要があります) を取得します。

デモ: http://ideone.com/vlCtw

サンプル結果:

Current game status results:
Confirmed, Fylkir, Valur, 3, 1
Confirmed, Selfoss, Grindavik, 3, 3
Confirmed, Keflavik, IBV, 1, 0
Confirmed, Stjarnan, IA, 1, 1
Confirmed, Breioablik, Fram, 0, 2
于 2012-05-31T22:46:42.390 に答える