0

我是 LINQ 的新手。我有以下数据表

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

Name 和 Date 是主复合键。

我想为每个日期选择所有名称,然后遍历新集合并选择下一个日期。

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 回答