如何返回一个bool,其中list只包含一个或多个所需的值

时间:2016-12-01 13:11:35

标签: c# linq

我正在努力弄清楚如何返回一个只包含一个或多个所需查询参数的项目列表。

我认为TrueForAll可能有效,但如果其中一个不存在则返回false。

var hasValidOptions = entity.clientcodes.TrueForAll(x => x.code == "B"
                                                      || x.code == "C"
                                                      || x.code == "E"
                                                      || x.code == "G"))

以下是我正在尝试做的一些例子(我只关注B,C,E和G):

  • 列表1:A B E G - > false,因为它包含A
  • 列表2:B G - >是的,因为它包含B和G
  • 列表3:E - >是的,因为它包含E
  • 清单4:B C E G - >为true,因为它包含B,C,E和G

我该怎么做?

2 个答案:

答案 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