我需要从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()方法的列的子集?
答案 0 :(得分: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(微软开发人员Devision)有一些关于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) {}