2017-04-25 98 views
0

我做对集合的查询与复杂对象的简化是否有这样做的LINQ查询

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查询而不应用结果集中的过滤?
我的意思是我想将第二个语句移到第一个语句上,所以查询/筛选可以再次运行oData Webservice。

回答

0

对我来说,它看起来像你想做到这一点:

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