2016-07-04 80 views
2

我试图将结果限制为仅包含至少25条loadWeight大于零的记录的结果。 (在这种情况下,使用Take()的第一个25是可以的)。查找至少有25个子记录大于0的记录 - LAMBDA

proxyList = proxyList 
    .Where(x => x.Load.LoadDetailList 
    .Take(25) 
    .Where(y => y.loadWeight > 0) 
    .ToList(); 

在此先感谢。

回答

3

Where(y => y.loadWeight > 0)第一过滤掉的记录数; Skip24条记录,并检查是否有是Any记录至今(即或更多记录):

proxyList = proxyList 
    .Where(x => x.Load.LoadDetailList 
    .Where(y => y.loadWeight > 0) 
    .Skip(24) 
    .Any()) // Any: do we have 25th item? 
    .ToList(); 
0

您的Where函数需要一个谓词,所以您需要返回一个布尔值。你要检查的符合条件的记录数超过25

proxyList.Where(x => x.Load.LoadDetailTest.Count(y => y.LoadWeight > 0) > 25)); 
+0

作为*正确*您的解决方案可能是低效* *:如果什么'计数(Y = > y.L​​oadWeight> 0)'returns'10000000'? –

1
proxyList = proxyList 
    .Where(x => x.Load.LoadDetailList 
     .Where(y => y.loadWeight > 0) 
     .Count() > 25) 
    .ToList(); 
+1

你的解决方案是正确的(但可能它应该是'.Count()> = 25'),但可能*效率低下:如果Count()返回123456789? –

+0

非常感谢。在这种情况下,最大记录数不会超过50。 – Quent