我有一个列表,每个都有一个国家列表属性:
public class Thing
{
public string Name
public List<Country> Countries;
}
List<Thing> AllThings;
现在我还有一系列我感兴趣的国家:
List<Country> interestingCountries;
如何在我的interestingCountries列表中找到所有县的所有东西? 例如,我有这些东西:
thing1.countries = (NL, BE, FR)
thing2.countries = (NL, BE)
thing3.countries = (FR, BE)
thing4.countries = (NL, BE)
thing5.countries = (NL)
这些有趣的国家:
interestingCountries = (NL, BE)
结果应该包括: thing1,thing2,thing4
我试过了:
result = AllThings;
foreach (var country in interestingCountries )
result = result.Where(p => p.Countries.Any(c => c == land));
这会返回所有将NL或BE作为国家/地区的内容...
答案 0 :(得分:1)
尝试使用Contains
并执行:
var list = AllThings.Where(at => at.Countries.Where(c => interestingCountries.Contains(c.CountryName))).ToList();
答案 1 :(得分:1)
试试这个:
AllThings.Where(thing => thing.Countries.Intersect(interestingCountries).Count() == interestingCountries.Count);
答案 2 :(得分:1)
对于每次thing
测试,如果interestingCountries
包含thing.Countries
中没有的任何元素。 (这将返回thing1,thing2和thing4。)
AllThings.Where(t => !interestingCountries.Except(t.Countries).Any());