我希望我的最终结果是Country类型的通用列表(不改变任何形状)。我会写什么linq查询给我前三个国家,其中StateName以'S'开头的所有国家中以'S'开头的'S'
IE:我想搜索我的内部对象和外部对象,但是将我的内部对象的数量限制为X
public class Country
{
public string CountryName { get; set; }
public List <State> StateList { get; set; }
}
public class State
{
public string StateName { get; set; }
}
答案 0 :(得分:4)
您可以使用Any()检查给定国家/地区的任何状态是否以“S”开头。 Take()允许您限制结果数量。
使用以下查询,您可以将状态数限制为(max)三:
List<Country> result = (from c in countries
where c.CountryName.StartsWith("C") && c.StateList.Any(s => s.StateName.StartsWith("S"))
select new Country()
{
CountryName = c.CountryName,
StateList = (from s in c.StateList
where s.StateName.StartsWith("S")
select s).Take(3).ToList()
}).ToList();