C#Linq To Entities(SkipWhile not working)

问题描述:

我正在计算基于股票交易的库存,但我想排除那些发票未标记为的股票交易IsStocked这是Nullable布尔值,我试图通过使用SkipWhile这是行不通的,它简单地计算所有交易的无论是发票IsStocked属性为true或false:C#Linq To Entities(SkipWhile not working)

这里是我的尝试:

public double GetInStockQuantity(Warehouse warehouse, Entities db) 
{ 
    double res; 
    try 
    { 
     res = db.Stocks.AsNoTracking().Where(c => c.Product.ID == ID && c.WarehouseID == warehouse.ID). 
      AsNoTracking().AsEnumerable(). 
      SkipWhile(c => c.InvoiceItems.Any(q => q.Invoice.IsStocked == false)).Sum(q => q.Quantity); 
    } 
    catch (Exception) 
    { 
     res = 0; 
    } 
    return res; 
} 
+2

请检查http://*.com/questions/2527047/linq-is-skipwhile-broken,您对SkipWhile的期望可能不同 –

您可以试试其中条款。

public double GetInStockQuantity(Warehouse warehouse, Entities db) 
    { 
     double res; 
     try 
     { 
      res = db.Stocks.AsNoTracking().Where(c => c.Product.ID == ID &&  c.WarehouseID == warehouse.ID). 
      AsNoTracking().AsEnumerable(). 
      Where(c => c.InvoiceItems.Any(q => q.Invoice.IsStocked == true)).Sum(q => q.Quantity); 
     } 
     catch (Exception) 
     { 
      res = 0; 
     } 
      return res; 
    }