我在查询中遇到问题,我想要合并2个列表。
我想将表格地方和地理位置中的记录合并到视图模型属性地方。
Fruits = (from e in db.Fruits
where !e.Excluded
select new FruitViewModel()
{
CodFood = e.CodFood,
Name = e.Name,
Color = e.Color,
Places = (from p in e.Places
where !p.Excluded
select new FruitViewModel()
{
CodPlace = p.CodPlace,
Name = p.Name
}).Union(
from r in e.Locations
where !r.Excluido
select new FruitViewModel()
{
CodLocation = r.CodLocation,
Name = p.Name
})
}),
但它给了我:
System.NotSupportedException:类型“Project.ViewModel.Fruits.FruitsViewModel”出现在单个LINQ to Entities查询中的两个结构不兼容的初始化中。可以在同一查询中的两个位置初始化类型,但前提是在两个位置都设置了相同的属性,并且这些属性的设置顺序相同。
我可以在Linq执行this answer之后合并,但是我想保持简单,不要过多改变这段代码,如果可能的话 - 在延迟执行之前进行查询。
我该如何解决这个问题?
答案 0 :(得分:14)
根据错误消息,您的FruitViewModel初始化似乎存在问题。试试这个:
Places = (from p in e.Places
where !p.Excluded
select new FruitViewModel()
{
CodLocation = "",
CodPlace = p.CodPlace,
Name = p.Name
}).Union(
from r in e.Locations
where !r.Excluido
select new FruitViewModel()
{
CodLocation = r.CodLocation,
CodPlace = "",
Name = p.Name
})