C# LINQ:无效的匿名类型成员声明符。匿名类型成员必须使用成员分配、简单名称或成员访问权限声明
select语句中包含以下SQL代码段:C# LINQ:无效的匿名类型成员声明符。匿名类型成员必须使用成员分配、简单名称或成员访问权限声明,c#,sql-server,linq,linq-to-sql,C#,Sql Server,Linq,Linq To Sql,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" ||
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" :
(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");
这将返回布尔值true或false…我们可以完成整个LINQ查询吗?我不知道你可以这么做。非常感谢你的帮助。我不知道你能做到。非常感谢你的帮助。