C# LINQ 从值不包含在数组/列表中的位置选择

标签 c# linq

LINQ 的新手,不确定我想做的事情的正确语法。

我有一个“阻止列表”,一个数组或列表(可以是其中之一)我不想放入我正在制作的这个新“ key ”列表中的错误代码

目前...

var keys = (from s in context.Keys
            where s.Code != "BadCode1"
            where s.Code != "BadCode2"
            where s.Code != "BadCode3"
            where s.Code != "BadCode4"
            where s.Code != "BadCode5"
            orderby s.Name
            select s).ToList<Keys>();

我如何将其缩减为一行并从“黑名单”中读取? 更像是……

var keys = (from s in context.Keys
            where s.Code != ANY OF THE VALUES FROM "BLOCKLIST"
            orderby s.Name
            select s).ToList<Keys>();

最佳答案

将其添加到数组中,然后使用Contains:

var badCodes = new[] { "BadCode1", "BadCode2", "BadCode3", "BadCode4", "BadCode5"};

var keys = (from s in context.Keys
            where !badCodes.Contains(s.Code)
            orderby s.Name
            select s).ToList<Keys>();

关于C# LINQ 从值不包含在数组/列表中的位置选择,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41484293/

相关文章:

c# - WPF 应用程序性能

c# - LINQ 中的可迭代析取

c# - 如何编写生成字典的 LINQ 查询?

c# - 为什么评估 bool 表达式的普通法则不适合 LINQ?

c# - C#LINQ中反向查询List

c# - 避免 LINQ 中的重复

c# - 冗余 'IEnumerable.OfType<T>' 调用考虑与 'null' 进行比较

c# - LINQ和SQL Server性能调优SQL Server 2008数据库最佳实践?

c# - ASP textbox.text 添加 ","到我的返回值

c# - Linq 查询我的 List<Square> 以查看一个列表的项目是否在另一个列表中