2017-09-26 43 views
1

鉴于以下数据集:LINQ ToArray的()与条件

WharehouseId Sku  OnHold  InStock 
=========================================== 
1    ABC-123  N   20 
2    ABC-123  N   13 
3    ABC-123  Y   4 
4    ABC-123  N   18 

我需要创建一个int[]数组返回InStock项目,但该值应为0如果OnHold等于'Y'。因此在上面的数据集,数组的结果应该是:

{ 20, 13, 0, 18 } 

我能够通过以下操作来实现这一点:

int[] inStockQty = new int[4]; 
int i = 0; 

foreach (var item in query) 
{ 
    inStockQty[i] = item.OnHold == 'N' ? item.InStock : 0; 
    i++; 
} 

但我不知道是否也有办法做到这一点使用LINQ的ToArray()

回答

7

可以有条件进入LINQ的Select,就像这样:

var inStockQty = query.Select(item => item.OnHold == 'N' ? item.InStock : 0).ToArray();