在LINQ中选择嵌套属性值

时间:2015-08-05 13:17:44

标签: c# .net linq

我对Linq很新,我开始尝试过滤列表和IEnumerable内容而不使用foreach循环。在这种情况下,如果符合给定条件,我想要检索嵌套属性。

这是我到目前为止所做的:

IEnumerable<GroupTourData> test = 
    web_service_item.TourInstances
    .Where(x => x.Availability.Where(a => a.Price > 0 && a.Grade == string.Empty)
    .Count() > 0);

我想在这里实现的是匹配条件中所有价格的IEnumerable列表。我可以通过将.SelectMany(a.Price)添加到此语句的末尾来获得,但这似乎在Visual Studio中出错。

非常感谢任何帮助或指示。

2 个答案:

答案 0 :(得分:2)

好像好了,因为这解决了这个问题:

如果您只想要price?那你只是让你的SelectMany处于错误的位置:

web_service_item
    .TourInstances
    .SelectMany(ti => ti.Availability)
    .Where(a => a.Price > 0 && a.Grade == string.Empty)
    .Select(a => a.Price);

答案 1 :(得分:1)

根据您的数据架构和表格...您是否尝试过使用Include包含子实体?

IEnumerable<GroupTourData> test = web_service_item
    .TourInstances
    .Include("Availability")
    .Where(x => x
        .Availability
        .Any(a => a.Price > 0 && a.Grade == string.Empty)
    );