为什么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);
    }

没有问题。为什么会这样?

为什么LINQ表达式“;不支持”;将Char转换为其内部的String时

错误告诉您原因。查询提供程序不知道如何将该操作映射到SQL中。当您在应用程序中执行该操作并评估其值时,它确实知道如何处理该操作的结果。