我正在尝试将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);
答案 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
转换