我正在努力弄清楚如何返回一个只包含一个或多个所需查询参数的项目列表。
我认为TrueForAll
可能有效,但如果其中一个不存在则返回false。
var hasValidOptions = entity.clientcodes.TrueForAll(x => x.code == "B"
|| x.code == "C"
|| x.code == "E"
|| x.code == "G"))
以下是我正在尝试做的一些例子(我只关注B,C,E和G):
A B E G
- > false,因为它包含A B G
- >是的,因为它包含B和G E
- >是的,因为它包含E B C E G
- >为true,因为它包含B,C,E和G 我该怎么做?
答案 0 :(得分:6)
我相信你可以使用All
:
list.All(x => x.code == "B" || x.code == "C" || x.code == "E" || x.code == "G");
您可以通过使用以下数组来更轻松地修改选项:
string[] options = new [] { "B", "C", "E", "G" };
list.All(x => options.Contains(x.code));
答案 1 :(得分:-1)
调整了我的代码,它完全符合我的要求。如果这可以改善,看到任何评论
我简化了示例,字符串数组是动态构建的。
var clientCodes = new List<string> {"A", "B", "C", "E", "G"};
var hasValidOptionsOnly = clientCodes.TrueForAll(x=>x.Contains("B") || x.Contains("C") || x.Contains("E") || x.Contains("G"));
如果列表仅包含B,C,E或G
的任意组合,则返回true