无法创建类型为“System.Char”的常量值

13

在EF6中,我尝试使用LINQ对一些值进行分组和求和,但是遇到以下错误:

无法创建类型为'System.Char'的常量值。在此上下文中,仅支持原始类型或枚举类型。

我查看了StackOverflow上六个类似问题,但没有找到我的问题。以下是查询语句:

var q = from c in _context.HoursProviderCosts
        where c.PatientInsuranceCompanyName == insuranceName
            && c.HoursDate >= startDate
            && c.HoursDate <= endDate
        group c by new { c.ID, c.PatientFirstName, c.PatientLastName } into g
        select new Models.InsuranceCostListItem
        {
            PatientID = g.Key.ID,
            PatientName = g.Key.PatientFirstName + ' ' + g.Key.PatientLastName,
            Total = g.Sum(x => x.ProviderRate)
        };

return q.ToList();

是我的分组有问题吗(我对此很陌生)?底层的EF6模型没问题(我可以展开_context.HoursProviderCosts的结果视图并正常查看数据)。

谢谢。

编辑:方法签名:

public List<Models.InsuranceCostListItem> InsuranceCostsListItems(DateTime periodStart, string insuranceName) {

尝试使用字符串字面量而不是字符字面量:PatientName = g.Key.PatientFirstName + " " + g.Key.PatientLastName - 15ee8f99-57ff-4f92-890c-b56153
2
@EdPlunkett 哎呀!今天真是...把它放在答案里,我会标记它。 - jleach
1
(我把它归咎于JavaScript) - jleach
1个回答

29

你的空格被单引号包括,因此它是一个字符字面量。 EF6不知道如何将其转换为SQL。如果你使用双引号,空格变成了字符串,EF6就知道该怎么做了。

PatientName = g.Key.PatientFirstName + " " + g.Key.PatientLastName.

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接