为什么此LinQ查询不喜欢字符?

问题描述 投票:2回答:3

我有一个LINQ查询,它可以获取所需的所有数据并将其合并到数据传输对象中,除我将DTO的一个成员(即char)设置为char值会引发查询异常外,其他一切工作正常。 ..

类型为'System.ServiceModel.FaultException'的未处理异常'mscorlib.dll中发生]

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

请参见下面的简化查询:

var result = (from c in db.Foster_Carers
              where c.foster_carer_id == id
              join fc in db.Individual_Carers on c.first_carer_id equals fc.individual_carer_id
              select new FosterCarerPersonalInfoDTO
              {
                  carer_title = fc.title,
                  carer_forenames = fc.forename,
                  carer_surname = fc.surname,                                
                  carer_gender = 'm'
              }).SingleOrDefault();

将性别设置为'm'只是行不通,语法上还可以,只是在执行查询时不行!可能是什么问题?

c# linq linq-to-sql
3个回答
7
投票
这是EF的局限性,因为char不是原始类型,有关原因的更多详细信息,请参见answer。限制本身也是documented

0
投票
我遇到过同样的问题,不得不存储一个中间值,并在Linq查询之外进行转换:

0
投票
如果这是使用c#来自VS和MVC的,则除去撇号并改用全引号。
© www.soinside.com 2019 - 2024. All rights reserved.