C# 具有条件的LINQ ToArray()

C# 具有条件的LINQ ToArray(),c#,linq,C#,Linq,给定以下数据集: WharehouseId Sku OnHold InStock =========================================== 1 ABC-123 N 20 2 ABC-123 N 13 3 ABC-123 Y 4 4 ABC-123

给定以下数据集:

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
项,但如果
OnHold
等于
'Y',则值应为
0
。因此,在上面的数据集中,数组结果应该是:

{ 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()

将条件移动到LINQ的
Select
,如下所示:

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

您可以将条件移动到LINQ的
选择中,如下所示:

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