1

我需要从 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() 方法的列子集?

4

1 回答 1

4

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

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) {}
于 2008-11-14T01:39:56.067 回答