Linq to entities LINQ到实体:从多对一关系创建逗号分隔的字符串
我有两个具有多对一关系的表,我正在尝试创建一个包含逗号分隔字符串的字符串,如下所示 让我们称它们为State和City-City表有一个FK to State.ID,并且状态属于国家:Linq to entities LINQ到实体:从多对一关系创建逗号分隔的字符串,linq-to-entities,concatenation,Linq To Entities,Concatenation,我有两个具有多对一关系的表,我正在尝试创建一个包含逗号分隔字符串的字符串,如下所示 让我们称它们为State和City-City表有一个FK to State.ID,并且状态属于国家: var foo = from item in _ctx.State where item.country_id == country_id select new { id = item.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”},
等等
使用字符串.Join(来自问题),我得到:
LINQ to实体无法识别
方法“System.String”
Join(System.String,System.String[])'
方法,并且此方法不能为空
翻译成商店表达式
有什么方法可以做到这一点吗?您需要将查询拆分为LINQ到实体(DB stuff)和LINQ到对象(
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());