我尝试GroupBy
一个字段,Select
键进入新类型(国家/地区),然后SelectMany
进入新的集合类型(CountryPrefix)
通过直觉,我想出了以下内容,但是,我遇到了“密封交易”的麻烦。
给出以下课程
public class TempPrefix
{
public String CountryName { get; set; }
public String Prefix { get; set; }
public int ClassificationId { get; set; }
}
和tempPrefixes
是List<TempPrefix>
var countries = tempPrefixes
.GroupBy(x => x.CountryName)
.Select(x => new Country
{
Name = x.Key,
CountryPrefixes = x.SelectMany(y => new CountryPrefix
{
ClassificationId = y.ClassificationId,
Prefix = y.Prefix
})
});
在SelectMany
方法的类型参数 “System.Linq.Enumerable.SelectMany(System.Collections.Generic.IEnumerable, System.Func&GT)” 无法从使用中推断出来。尝试指定类型参数 明确。
我确定这告诉我一些事情,但我不太确定它是什么
ANSWER
在接受的答案中说明我只需使用Select
而不是SelectMany
此外,我必须将结果转换为列表
var countries = tempPrefixes
.GroupBy(x => x.CountryName)
.Select(x => new Country
{
Name = x.Key,
CountryPrefixes = x.Select(y => new CountryPrefix
{
ClassificationId = y.ClassificationId,
Prefix = y.Prefix
}).ToList()
});
答案 0 :(得分:0)
尝试将其更改为Select
而不是..
在
CountryPrefixes = x.SelectMany(y => new CountryPrefix
{
ClassificationId = y.ClassificationId,
Prefix = y.Prefix
})
x已经是相应群组下的TempPrefix
的集合,因此您可以通过CountryPrefix
Select