キーワードは「条件付き」です。linqを使用してデータベースから複数の列を条件付きでグループ化する方法は?
私は次のDataTableを持っている:金額の合計と同じ日に移転のプレミアムと法戻されるタイプの支払いのために 、ディスプレイ1つのレコード:
Date Type Method Amount SerialNumber TransId Info
1/1/11 Misc Check 50.00 5412 1000 NA
1/1/11 Misc Check 25.00 5413 1001 ABC
1/2/11 Pymt Fee 15.00 5476 1002 CD
1/3/11 Returned Premium Transfer 20.00 6741 1105 D
1/3/11 Returned Premium Transfer 35.00 7456 1106 S
基準は、次のように述べてい。タイプ、方法、TransId、シリアル番号は最初の支払いから表示され、Info列は空白のままにしてください。彼らは同じ日付、種類、およびメソッドを持っている場合、私は以下のLINQを試してみましたが、その希望グループALL支払い
Date Type Method Amount SerialNumber TransId Info
1/1/11 Misc Check 50.00 5412 1000 NA
1/1/11 Misc Check 25.00 5413 1001 ABC
1/2/11 Pymt Fee 15.00 5476 1002 CD
1/3/11 Returned Premium Transfer 55.00 6741 1105
:
は、ここに私が必要とする出力です。同じDate、Type = Return Premium、およびMethod = Transferを持つレコードをグループ化するだけです。
var dt = tbl.AsEnumerable()
.GroupBy(row => new
{
Date = row.Field<DateTime>("Date"),
TranType = row.Field<string>("Type"),
TranMethod = row.Field<string>("Method")
}).Select(g => g.CopyToDataTable()).FirstOrDefault();
入力はDataTableのであり、出力は私がcopyingToDataTableだ理由です、DataTableにする必要があります。
特定の日付に単一の「返品プレミアム」、「譲渡」がある場合はどうすればよいですか? –
すべてのレコードは、タイプ=返品プレミアム、メソッド=転送、およびこれら2つのレコードが同じ日付を持つ場合を除いて、個々のレコードとして扱う必要があります。 – Pavel
なぜデータセットを条件に基づいて2つに分割し、その条件を持つアイテムをグループ化して、その結果を1つのデータテーブルに入れるのはなぜですか? –