c# - 在 LINQ2DataSet 中指定返回行

标签 c# .net linq linq-to-dataset

我需要从 DataTable 中提取行的不同子集,并且认为 LINQ2DataSets 可能是一种有用且干净的方法来执行此操作,但似乎无法简单地将 LINQ2DS 查询的返回行标识为跟随

var result = from r in fips.AsEnumerable() select
r.Field<string>("FACILITY_PROCESS_SUB_GROUP_CODE"),
r.Field<string>("PROCESS_SUB_GROUP_NAME"),
r.Field<string>("...

因为我在第一个逗号后开始出现错误。

这是一个正确的假设吗?我如何绕过它从数据集中返回我可以应用 Distinct() 方法的列子集?

最佳答案

您忘记了新语句和字段名称:

var result = from r 
    in fips.AsEnumerable() 
    select new
    {
        FacProcess = r.Field<string>("FACILITY_PROCESS_SUB_GROUP_CODE"),
        GroupName = r.Field<string>("PROCESS_SUB_GROUP_NAME"),
        Item3 = r.Field<string>("Item3")
    };

您还可以显式声明您将要使用的类型:

var result = from r 
    in fips.AsEnumerable() 
    select new MyType("InitClassParams") 
    {
        FacProcess = r.Field<string>("FACILITY_PROCESS_SUB_GROUP_CODE"),
        GroupName = r.Field<string>("PROCESS_SUB_GROUP_NAME"),
        Item3 = r.Field<string>("Item3")
    };

Scott Guthrie (微软开发部门副总裁)有一些关于 LINQ 的有用信息(他谈到了 LINQ to SQL,但其中大部分内容无论如何都适用)。

然后应用distinct子句:

var result = from r 
    in fips.AsEnumerable() 
    select new
    {
        FacProcess = r.Field<string>("FACILITY_PROCESS_SUB_GROUP_CODE"),
        GroupName = r.Field<string>("PROCESS_SUB_GROUP_NAME"),
        Item3 = r.Field<string>("Item3")
    }
    distinct;

然后将其放入列表或对其进行迭代。在运行以下类似内容之前,不会选择/区分/等任何内容:

var list = result.ToList()
foreach(var item in result) {}

关于c# - 在 LINQ2DataSet 中指定返回行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/288972/

相关文章:

c# - Json.NET 从自动属性初始值设定项获取默认值

c# - Mysql连接错误及Ipv6协议(protocol)

c# - DialogResult 并在单击按钮时显示消息

c# - 这是在 Windows 10 Universal App 中将流保存到文件的好方法吗?

c# - 'var' 的目的是什么?

c# - .Net MVC 中的 URL 重写

c# - 使用属性路由时如何获取 Mvc 5 Controller 的 ActionDescriptor?

c# - 即使在增加属性值后也出现 WCF MaxRecievedMessageSize 异常

c# - Entity Framework 6 : Trim does not work properly

c# - 如何在特定属性上使用 Distinct 并根据谓词选择要保留的对象?