为什么LINQ表达式“;不支持”;将Char转换为其内部的String时
本文关键字:内部 String 转换 表达式 LINQ 不支持 为什么 Char | 更新日期: 2023-09-27 18:21:31
如果我通过在表达式中添加空字符串""
来将firstLetterOfLastName
转换为字符串,当我尝试将结果转换为List
时,我会得到以下异常:
EntityFramework.SqlServer.dll 中首次出现类型为"System.NotSupportedException"的异常
出现故障的代码:
public ActionResult Index(char firstLetterOfLastName = 'A') {
var queryResult = db.Persons.Where(person => person.LastName.StartsWith(firstLetterOfLastName + ""))
.OrderBy(person => person.Id);
var list = queryResult.ToList(); // EXCEPTION
return View(list);
}
然而,当我早些时候在LINQ表达式之外进行转换时,如下所示:
public ActionResult Index(char firstLetterOfLastName = 'A') {
string flofnAsString = firstLetterOfLastName + "";
var queryResult = db.Persons.Where(person => person.LastName.StartsWith(flofnAsString + ""))
.OrderBy(person => person.Id);
var list = queryResult.ToList();
return View(list);
}
没有问题。为什么会这样?
错误告诉您原因。查询提供程序不知道如何将该操作映射到SQL中。当您在应用程序中执行该操作并评估其值时,它确实知道如何处理该操作的结果。