LINQ INNER SELECT with TOP

时间:2011-12-27 13:35:28

标签: c# linq

我希望我的最终结果是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; }
}

1 个答案:

答案 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();