我有一个运行良好的 linq 查询(虽然它可能写得更好,如果你注意到什么请这样说)
var qry = BenefitCodes
.Where(b => b.BenInterest != 'E'
&& (b.BenProductLine == CoverageProductLine || b.BenProductLine == null) )
.Select(b => b)
.OrderBy(b => b.BenDesc);
管道中出现了一项新要求,以排除两个 BenCodes(1001、1009),BenCodes 只是 SQL 表中的另一列。
我是否应该使用“.Contains”的某些变体,我必须使用 !Contains 或其他方式。谁能指出我正确的方向?
谢谢, ~ck 在圣地亚哥
最佳答案
是的,一种处理方法如下(为了简洁和可读性,我排除了您查询的其余部分):
var excludedBenCodes = new List<int>() { 1001, 1009 };
var query = BenefitCodes.Where(b => !excludedBenCodes.Contains(b.BenCodes));
我相信这比在您的 where 子句中添加子句 b.BenCodes != 1001 && b.BenCodes != 1009
的替代方法更具可读性和可维护性。
关于C# Linq 语法帮助 - 如何排除两个值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1405947/