投影中的Concat字符串(Linq)

时间:2013-08-07 09:11:00

标签: c# linq asp.net-mvc-4 entity-framework-5

如何在投影中连接两个字符串?

这是我到目前为止所做的:

IEnumerable<NameIdentity> data = null;
JsonResult res;
using (DBContext _db = new DBContext())
{
      data = MyEntity.GetEntities(_db).OrderBy(a=> a.name)
                    .Select(b=> new NameIdentity
                    {
                        ID = b.entityID,
                        Name = String.Join(" - ", new String[]{ b.year, b.name })
                    });
      res = Json(data.ToList(), JsonRequestBehavior.AllowGet);
 }

我需要在我的投影的名称属性中连接年份和名称属性。

给出的错误是“NotSupportedException”,表示LINQ to Entities无法识别de Join()方法,并且无法将其转换为商店表达式。

2 个答案:

答案 0 :(得分:1)

 data = MyEntity.GetEntities(_db).OrderBy(a=> a.name)
                .Select(b=> new NameIdentity
                {
                    ID = b.entityID,
                    Name =  b.year +"-" + b.name
                });

答案 1 :(得分:1)

当您使用linq-to-entities时,您无法在查询中使用任意.NET方法,您可以使用EdmFunctions,我在这里使用EdmFunctions.Concat

data = MyEntity.GetEntities(_db).OrderBy(a=> a.name)
            .Select(b=> new NameIdentity
            {
                ID = b.entityID,
                Name = EdmFunctions.Concat(b.year, "-", b.name) 
            });

您还可以使用Canonical功能