【发布时间】:2015-08-05 22:28:40
【问题描述】:
我对 Linq 还很陌生,我开始尝试在不使用 foreach 循环的情况下过滤列表和 IEnumerable 内容。在这种情况下,如果嵌套属性符合给定条件,我想检索它。
这是我目前所拥有的:
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 中出错。
任何帮助或指点将不胜感激。
【问题讨论】:
-
哪种类型的错误?你能发布错误吗?
-
你的代码中应该有
.Include("Availability")吗? -
您只想要价格?那么你只是把你的
SelectMany放在了错误的位置:web_service_item.TourInstances.SelectMany(ti => ti.Availability).Where(a => a.Price > 0 && a.Grade == string.Empty).Select(a => a.Price); -
不是第二个
Where,而是使用Any返回布尔值。 -
.Count()采用 lambda 表达式,因此您可以使用.Where(x => x.Availability.Count(a => a.Price > 0 && a.Grade == string.Empty) > 0)