Linq匹配模式

时间:2009-12-10 14:22:25

标签: c# linq

我必须在CityList中搜索字符串列表,如果它包含所有搜索字符串 然后它应该返回true,否则为假。

当我搜索“伦敦”,“达拉斯”对阵CityList时,它应该返回false,因为 CityList中缺少“达拉斯”。

var CityList=new string[] { "London","Paris","Houston","Mexico","Budapest"}

var search =new string[] {"London","Dallas"};

如何重写以下内容?

var result =  CityList.Select(c => c).ToList().FindAll(search.ToArray());

4 个答案:

答案 0 :(得分:4)

尝试以下方法:

var hasAll = !search.Except(CityList).Any();

顺便说一句,你永远不应该写something.Select(c => c);这样的声明除了使程序变得有点慢之外什么都不做。

答案 1 :(得分:3)

试试这个:

var result = search.All(s => CityList.Contains(s));

答案 2 :(得分:3)

您有各种可能性:

var result = CityList.Union(search).Count() == CityList.Count();
var result2 = search.All(s => CityList.Contains(s));
var result3 = search.ToList().TrueForAll(s => CityList.Contains(s));
var result4 = CityList.Intersect(search).Count() == search.Count();

答案 3 :(得分:2)

这很简单

search.All(c => CityList.Contains(c))

只有在所有谓词都返回true时才会满足,然后我们检查citylist是否包含项目