【发布时间】:2017-08-18 08:03:29
【问题描述】:
我正在尝试借助 LINQ 将这组数据转换为一个对象,但出现此错误:
无法将 void 分配给隐式类型变量
我可以理解我必须使用Select() 函数,但我不知道该怎么做。
数据集:
[Zip] [Fips] [County] [StateAbbr] [StateName]
90210 12345 County1 CA California
90210 12346 County2 CA California
90210 12347 County3 CA California
90210 12348 County4 CA California
代码片段:
var zipInfo = results.ForEach(z => new ZipInfoEntity{
Zip = z.Zip,
StateName = z.StateName,
StateAbbr = z.StateAbbr,
FipsCountyInfo = new List<FipsCountyInfoEntity>{
new FipsCountyInfoEntity {
Fips = z.Fips,
County = z.County
}
}
});
public ZipInfoEntity
{
public string Zip {get;set;}
public string StateName {get;set;}
public string StateAbbr {get;set;}
public IList<FipsCountyInfoEntity> FipsCountyInfo {get;set;}
}
public FipsCountyInfoEntity
{
public string Fips {get;set;}
public string County {get;set;}
}
我最终想要实现的是 ZipInfoEntity 的对象。 如果您将看到我的数据集,它的 Zip、StateAbbr 和 StateName 对所有行都相同。县和 Fips 正在发生变化。
所以我的最终对象应该是这样的
{
Zip: "90210",
StateAbbr: "CA",
StateName: "California",
FipsCountyInfo: [
{Fips: "12345", County: "County1"},
{Fips: "12346", County: "County2"},
...]
}
【问题讨论】:
-
你能澄清一下你最终的对象结构是什么样的吗?是否应该有一个包含多个县信息对象列表的 zip 信息实体,还是您确实希望数据集的每一行都有一个 zip 信息实体?
-
@Chris 更新问题。
-
所以你需要使用
GroupBy而不是任何选择或其他任何东西 -
@m.rogalski 你能帮我解决这个问题吗?
-
我假设您可以保证只有 Fips 和 County 会改变,而其他字段在行之间会相同?