执行此Linq查询是否有简化

时间:2017-04-25 23:11:09

标签: c# .net linq linqpad

我正在对具有复杂对象的集合进行查询

Movies
.Where(qry => qry.Delivery.Any(b => (b.DeliveryType.Contains("Digital"))))
.Select(qry => new { Id          = qry.Id, 
                     Name        = qry.Name, 
                     Description = qry.Description, 
                     Delivery    = qry.Delivery.Where(qry2 => qry2.DeliveryType.Contains("Digital")).FirstOrDefault()
                   }).ToArray().Where(qry => qry.Delivery.Properties.Any(d => d.Value == "UHD" || d.Value == "FHD" ||  d.Value == "HD"))

电影目录有两种类型,物理和数字,因为我有兴趣获得所有具有数字版本的电影我正在运行上述查询,并且从结果集中,我想要排除数字的SD版本。

有没有办法可以执行此linq查询而不应用结果集中的过滤?
我的意思是我想将第二个where语句移动到我的第一个语句,因此查询/过滤可以再次运行oData Webservice。

1 个答案:

答案 0 :(得分:0)

对我来说,看起来你正试图这样做:

Movies
   .Where(movie => movie.Delivery.Any(d => d.DeliveryType.Contains("Digital") 
       && d.Properties.Any(p => p.Value.EndsWith("HD"))))