2013-08-07 48 views
0

如何在投影中连接两个字符串?投影中的Concat字符串(Linq)

这是我到目前为止有:

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); 
} 

我需要在我的投影的名称欢迎使用属性来串联年和name属性。

给我的错误是一个“NotSupportedException”,它表示LINQ to Entities不能识别de Join()方法,并且它不能转换为存储表达式。

+1

更多详情请参阅? –

+0

@ It'sNotALie。对不起,我更新了我的答案与真正的错误。 – amp

回答

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

这是我第一次尝试,它不工作。现在我尝试了另一次,它工作...我不知道为什么... – amp

1

当您使用LINQ到实体不能使用查询任意.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功能