C# LINQ filtering

本文关键字:filtering LINQ | 更新日期: 2023-09-27 18:36:22

我有这段代码

            var tblGrouped = dtCSV.AsEnumerable()
                .GroupBy(r => new
                {
                    product_id   = r.Field<String>("product_id"),
                    owner_org_id = r.Field<String>("owner_org_id"),
                });

但是我想添加一个额外的列来过滤。 基本上,例如,如果course_type_id = 1。 dtCSV 是填充course_type_id的源。 我尝试了以下方法,但没有用:

            var tblGrouped = dtCSV.AsEnumerable()
                .GroupBy(r => new
                {
                    product_id   = r.Field<String>("product_id"),
                    owner_org_id = r.Field<String>("owner_org_id"),
                    course_type_id = "1",
                });

C# LINQ filtering

如果我

正确理解您的要求,您想对course_type_id为 1 的行进行分组吗?

var tblGrouped = dtCSV.AsEnumerable()
    .Where(r => r.Field<String>("course_type_id") == "1")
    .GroupBy(r => new
        {
            product_id   = r.Field<String>("product_id"),
            owner_org_id = r.Field<String>("owner_org_id"),
        });

按使用Where语法进行筛选前任。 .Where(a=>a.Field<String>("course_type_id") == "1")

您需要

先添加条件。您可以使用.Where来执行此操作:

var tblGrouped = dtCSV.AsEnumerable()
    .Where(r => r.Field<String>("course_type_id") == "1")
    .GroupBy(r => new
    {
        product_id   = r.Field<String>("product_id"),
        owner_org_id = r.Field<String>("owner_org_id"),
        course_type_id = "1"
    });