我在 select 语句中有以下 SQL 片段:
CASE
WHEN wot.id LIKE '%Correct%' THEN 'Corrective'
WHEN wot.id LIKE '%Pred%' THEN 'Preventative'
ELSE 'OTHER'
END
AS worktype
我已将其翻译成 LINQ to SQL,如下所示:
WorkType = groupItem.Key.Id.Contains("Correct") ? "Corrective" : "OTHER" ||
WorkType = groupItem.Key.Id.Contains("Pred") ? "Preventative" : "OTHER"
如果我将一个或另一个单独添加到 select 语句中,则查询工作正常。但是,当我添加 OR 语句并尝试在 select 中同时使用这两个语句时,出现“无效的匿名类型成员声明符。必须使用成员分配、简单名称或成员访问来声明匿名类型成员”错误。
我已经看到有关此错误的其他问题,在这些情况下,他们重命名其中一个语句(例如 WorkType、Work_Type)以解决问题。但是,Worktype 是我的输出字段的名称,因此我需要将两者都设置为 WorkType。
有什么想法吗?
最佳答案
解决方案:
应该是
WorkType = groupItem.Key.Id.Contains("Correct") ? "Corrective" :
(groupItem.Key.Id.Contains("Pred") ? "Preventative" : "OTHER");
问题:
因为你的代码有问题
WorkType = groupItem.Key.Id.Contains("Correct") ? "Corrective" : "OTHER" ||
WorkType = groupItem.Key.Id.Contains("Pred") ? "Preventative" : "OTHER"
您两次为工作类型赋值,这是不可能的
即使你写了这样的代码
WorkType = (groupItem.Key.Id.Contains("Correct") ? "Corrective" : "OTHER") ||
( groupItem.Key.Id.Contains("Pred") ? "Preventative" : "OTHER");
这将返回 bool 值 true 或 false...
关于c# - LINQ:无效的匿名类型成员声明符。匿名类型成员必须使用成员分配、简单名称或成员访问来声明,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11015065/