我必须在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());
答案 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是否包含项目