尝试在LINQ中连接列

时间:2014-02-12 21:37:50

标签: c# linq

我正在尝试将2列连接到我的结果集的1列。

var gridInfo = from leader in db.SchoolLdrAdminAccesses
               join emp in db.Employees
               on leader.ID equals emp.ID
               select new List<string> { leader.ID, string.Format("{0}{1}", emp.FirstName, emp.LastName) };

我收到此错误:

  

LINQ to Entities无法识别方法'System.String   格式化(System.String,System.Object,System.Object)'方法,以及此方法   方法无法转换为商店表达式。

我做错了什么?

我必须保留这个:

select new List<string> {...}

当我这样做时,我需要在List结构中。

        return Json(new
        {
            sEcho = param.sEcho,
            iTotalRecords = gridInfo.Count(),
            iTotalDisplayRecords = gridInfo.Count(),
            aaData = gridInfo.ToArray()
        },
        JsonRequestBehavior.AllowGet);

3 个答案:

答案 0 :(得分:5)

使用+运算符在EF中连接两个字符串:

select new List<string> { leader.ID, emp.FirstName + emp.LastName };

string.Format不同,查询提供程序知道如何将+运算符转换为SQL。

就此而言,在你拥有的任何其他C#代码中连接到字符串也是一样的。使用string.Format只是连接两个字符串是不必要的复杂,从而使读者感到困惑。

答案 1 :(得分:0)

请改用连词。像String.Format这样的函数无法在服务器端处理,这就是你收到此错误的原因。

答案 2 :(得分:0)

这是一个LINQ to Entities查询,String.Format不是它知道如何翻译的方法之一。因此,您必须先将其转换为一组.Net对象,然后应用String.Format转换