我有一个 linq 查询,我需要能够从数据表中选择可变数量的字段。我确实知道所有可以包含的字段,但只有两个肯定会在数据表中。我还将知道数据表中包含哪些字段(它会根据用户的选择而有所不同)。现在我设置了这样的东西:
var query = from item in dt.AsEnumerable()
group item by item.Field<string>("ID") into g
select new
{
ID = g.Key, //required
Status = g.Min(i => dostuff(i,"Status")), //not required
Disc = g.Min(i => dostuff(i,"Disc")), //not required
Loc = String.Join<string>(",", from i in g select i.Field<string>("Loc")) //required
};
dostuff(DataRow i,string field)
{
try
{
return i.Field<string>(field);
}
catch
{
return null;
}
}
所以 dostuff 基本上只是检查数据集中是否存在该字段,然后我只需要在处理查询结果时忽略不存在的字段,这不会太难。但是,似乎有更好的方法可以做到这一点,但我很难通过谷歌找到任何关于使用动态选择子句的信息。