我是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
}
My Linq表达错误
答案 0 :(得分: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()
};