0

私はLINQが初めてです。私は次のDataTableを持っています

Name   Date       price1  price2
string DateTime   decimal decimal
Jan09  14.01.2009 10.0    12.0
Feb09  14.01.2009 11.0    13.0
Jan09  15.01.2009 10.0    12.5
Feb09  15.01.2009  9.0    10.0
Jan09  18.01.2009 10.0    12.5
Feb09  18.01.2009  9.0    10.0

名前と日付は主複合キーです。

各日付のすべての名前を選択し、新しいコレクションを繰り返して次の日付を選択したいと考えています。

var subCollection =  tab.Rows.Cast<DataRow>().Select(r1 => r1["Date"]).Select<string>(r2 => r2["Name"])
foreach (DataRow row in subCollection)
{
    // do something with row
}

私のLinq式は間違っています

4

1 に答える 1

3

あなたが望むのは、日付でグループ化し、特定の日付のすべての名前を調べてから、ほとんどを次の日に見ることだと思います。

その場合は、Linq グループ構文を使用する必要があります...

var query = from row in table.AsEnumerable()
        group row by row["Date"] into g
        select g;

Linq グループ構文でさまざまなことを行うための多くの例をオンラインで見つけることができます。私が重要だと思うのは、次の構文を使用して、複数の列でグループ化し、Sum、Max、または Count などの集計関数を適用できることを理解することです。

var query = from row in table.AsEnumerable()
    group row by new { Date = row["Date"], Price1 = row["Price1"] }  into g
    select new
    {
        Date = g.Key.Date,
        Price = g.Key.Price1,
        Count = g.Count()
    };
于 2011-02-16T16:17:59.130 に答える