我有几个具有多对一关系的表,我正在尝试创建一个包含逗号分隔字符串的字符串,如下所示。
我们称之为州和城市 - 城市表有一个FK到State.ID,国家属于国家:
var foo = from item in _ctx.State
where item.country_id == country_id
select
new { id = item.ID,
names = item.Name + ": " + String.Join(", ",
(from c in _entity.City
where c.State.ID == item.ID
select c.City_Name).ToArray())
};
return Json(foo.ToList());
我正在寻找类似的东西:
[{id = 3,names =“CA:A,B,C”}, {id = 5,names =“OR:D,E”}, 等
在那里使用String.Join(来自this问题),我得到:
LINQ to Entities无法识别 方法'System.String 加入(System.String,System.String [])' 方法,这个方法不能 翻译成商店表达。
有办法做到这一点吗?
答案 0 :(得分:2)
您需要将查询拆分为LINQ to Entities(DB stuff)和LINQ to Objects(String.Join
以及其他方法):
var foo = from item in _ctx.State
where item.country_id == country_id
select
new
{
id = item.ID,
names = item.Name,
cities = from c in item.City select c.Name
};
var bar = from item in foo.AsEnumerable
select new
{
id = item.id,
names = item.names + ": " + String.Join(", ", item.cities.ToArray())
};
return Json(bar.ToList());
编辑:这很接近 - 我必须改变选择城市的方式,以便它是一个字符串数组,而不是城市对象。