LINQ不读括号

use*_*388 0 c# sql linq entity-framework

这是我的LINQ(EF):

var ls = from ps in ctx.Package_Services
     where 
        (ps.Package.Policy.Name != "Short-Term Career Policy"
            && ps.Package.Name != "Early Talent Package")
        &&
        (ps.Package.Policy.Name != "Assignment Policy"
            && ps.Package.Name != "Efficient Package")
     select new
     {
         Service = ps.Service,
         PackageService = ps
     };
Run Code Online (Sandbox Code Playgroud)

这是它生成的相关SQL:

WHERE (N'Early Talent Package' <> [Extent2].[Name]) 
AND (N'Efficient Package' <> [Extent2].[Name]) 
AND (N'Short-Term Career Policy' <> [Extent3].[Name]) 
AND (N'Assignment Policy' <> [Extent4].[Name])
Run Code Online (Sandbox Code Playgroud)

我想说的是,"我不想要组合X,我也不想要组合Y;但是,我确实想要"早期人才套餐",它们与"短期职业政策"无关. "而且,当他们与"作业政策"无关时,我也想要"高效套餐".

如何将其转换为LINQ?

Gra*_*ICA 5

它可能会消除它们,因为它不需要它们.

你实际上是在说"不是这个" "不是这个" "不是这个" "不是这个".

现在,如果你在中间有一个"OR",它必须考虑到它们:

(ps.Package.Policy.Name != "Short-Term Career Policy"
    && ps.Package.Name != "Early Talent Package")
||
(ps.Package.Policy.Name != "Assignment Policy"
    && ps.Package.Name != "Efficient Package")
Run Code Online (Sandbox Code Playgroud)