1

我有一个事物列表,每个事物都有一个国家列表属性:

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 作为国家的事物...

4

3 回答 3

1

尝试使用Contains并执行:

var list = AllThings.Where(at => at.Countries.Where(c => interestingCountries.Contains(c.CountryName))).ToList();
于 2013-06-17T09:26:01.677 回答
1

尝试这个:

AllThings.Where(thing => thing.Countries.Intersect(interestingCountries).Count() == interestingCountries.Count);
于 2013-06-17T09:29:03.627 回答
1

对于每个thing测试,如果interestingCountries包含任何不在thing.Countries. (这将返回 thing1、thing2 和 thing4。)

AllThings.Where(t => !interestingCountries.Except(t.Countries).Any());
于 2013-06-17T10:11:37.617 回答