如何通过 LINQ 从 DataTable 中选择子集?

发布于 2024-10-17 14:12:18 字数 606 浏览 1 评论 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

名称和日期是主复合键。

我想选择每个日期的所有名称,然后迭代新集合并选择下一个日期。

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 表达式错误

I am new to LINQ.
I have the following 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

Name and Date are the primary compound key.

I want to select all Names for each Date, then iterate through the new collection and select the next 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
}

My Linq expression is wrong

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

挽梦忆笙歌 2024-10-24 14:12:18

我认为您想要的是按日期分组,然后查看给定日期的所有名称,然后查看下一个日期。

如果是这种情况,您想使用 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()
    };

I think what you want is to group by your Date, then look at all the Names for a given date, then most onto the next.

If that is the case, you want to use the Linq group syntax...

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

You can find a lot of examples online for doing various things with the Linq group syntax. The thing I find important is realizing that you can group by multiple columns and still apply aggregate functions like Sum, Max, or Count using the following syntax:

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()
    };
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文