【发布时间】:2014-10-21 08:04:04
【问题描述】:
我对使用 LINQ 真的很陌生,我想知道我需要对下面的表达式做些什么来获取额外的字段
public class Foo
{
public string Name {get;set;}
public string Manufacturer {get;set;}
public float Price {get;set;}
}
var result= (
from row in dt.AsEnumerable()
group row by row.Field<string>("NAME") into g
select new Foo
{
Name = g.Key,
Price=g.Min (x =>x.Field<float>("PRICE"))
//Manufacturer = ????
}
).ToList();
我基本上需要从 MANUFACTURER 字段中获取制造商并在对象中设置它的值。我试过了:
row.Field<string>("MANUFACTURER")
//and
g.Field<string>("MANUFACTURER")
但我无法访问 DataTable 中的字段。谁能告诉我我做错了什么?
【问题讨论】:
-
嗯,一个组包含一行或多行,所以可能有几个不同的制造商......你想要哪一个?这个问题更多的是功能而不是技术。
-
这里的问题是你试图选择
Foo,就好像它是一个单一的项目(它可能是),但是按项目分组g本身就是一个IEnumerable(因此你需要做Min以获得标量价格)。这就是您尝试从多个项目集中选择标量制造商时遇到的问题。