4
這是我如何得到我的總和我可以在LINQ中使用後置條件語句嗎?
double? myVar = myList.Sum(x => x.MyItem);
是,有可能以零取代myVar的,如果在同一條線上.SUM()返回0?
我不想使用
if(myVar == 0) myVar = null;
LINQ是否有一個post-條件語句?
這是我如何得到我的總和我可以在LINQ中使用後置條件語句嗎?
double? myVar = myList.Sum(x => x.MyItem);
是,有可能以零取代myVar的,如果在同一條線上.SUM()返回0?
我不想使用
if(myVar == 0) myVar = null;
LINQ是否有一個post-條件語句?
這聽起來像你想要空合併運算符的反轉,並且LINQ或C#語言中沒有任何東西可以爲你做。你可以創建自己的擴展方法來做到這一點,如果你雖然想:
public T? NullIfDefault<T>(this T? value) where T : struct
{
if (value == null)
{
return value;
}
return EqualityComparer<T>.Default.Equals(default(T), value.Value)
? null : value;
}
然後:
double? myVar = myList.Sum(x => x.MyItem).NullIfDefault();
(有使用Nullable<T>.GetValueOrDefault()
如何代碼NullIfDefault
,如各種其它選項 - 你可能想以玩弄最喜歡的形式。)
非常感謝您的解釋。 – Alex
「MyItem」的類型是什麼?請注意,您的「我不想使用」似乎反過來 - 從空到0,而不是0到空。 –
@JonSkeet這是一個'雙?'我編輯了這個問題! – Alex
那麼if語句有什麼問題呢? – decPL