Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/262.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/27.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# LINQ:无效的匿名类型成员声明符。匿名类型成员必须使用成员分配、简单名称或成员访问权限声明_C#_Sql Server_Linq_Linq To Sql - Fatal编程技术网

C# LINQ:无效的匿名类型成员声明符。匿名类型成员必须使用成员分配、简单名称或成员访问权限声明

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" ||

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" :
    (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查询吗?我不知道你可以这么做。非常感谢你的帮助。我不知道你能做到。非常感谢你的帮助。