我有一個看起來像這樣的 JSON:
"items": [
"something": "",
"something_2": "",
"field_of_interest": {
"blah": [
{
"placeholder": "1",
"category": "random"
},
{
"placeholder": "2",
"category": "random",
"field_to_null": {
"something_here": "",
}
}
]
}
]
我正在嘗試將“field_to_null”欄位設定為空。這些 JSON 欄位都封裝到物件中,我有一個如下所示的運算式:
Items.Select(x => x.FieldOfInterest)
.Select(y => y.Blah
.Select(z => z.FieldToNull).ToList().ForEach(a => a = null));
但是我在第二個.Select. 此處發現錯誤。Items是一個Items物件串列并且Blah是一個FieldOfInterest物件串列。我對 C# 和撰寫 lambda linq 運算式相當陌生,因此感謝您提供任何幫助。
uj5u.com熱心網友回復:
Linq 的一般哲學不是改變事物,這就解釋了為什么ForEach不是 Linq 擴展方法,而是某些集合型別上的方法,例如List.
通常盡量避免在 Linq 運算子中使用不純的 lambda。
盡管如此,您仍然可以使用 Linq 進行變異,通過投影、使用Select運算子并將其傳遞給將回傳變異引數的 lambda。這是結果。
Items
.Select(i =>
{
i.FieldOfInterest.Blah = i.FieldOfInterest.Blah
.Select(bi =>
{
bi.field_to_null = null;
return bi;
})
.ToList() // Transform to the needed collection type
return i;
});
這相當于:
foreach(var i in Items)
{
foreach(var bi in i.field_of_interest.Blah)
{
bi.field_to_null = null;
}
}
Non-Linq 方法顯然更具可讀性。
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/360032.html
上一篇:多個子句阻塞整個過濾器
