【问题标题】:Unable to create a constant value of type 'System.Char'无法创建“System.Char”类型的常量值
【发布时间】:2019-09-12 21:02:41
【问题描述】:

我在尝试通过 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
  • @EdPlunkett AGH!多么美好的一天......把它扔到一个答案中,我会标记它
  • (我把它归咎于 JavaScript)

标签: c# linq


【解决方案1】:

你的空格是单引号的,所以它是一个字符文字。 EF6 doesn't know how to translate that to SQL。如果使用双引号,则空格是字符串,EF6 知道该怎么做。

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

C# 本身并不介意将字符文字“添加”到字符串中,但对于该代码,C# 编译器 is only a messenger

【讨论】:

    猜你喜欢
    • 2022-01-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多