SelectedListObjA.Where(x => x.FieldA == "ABC").FirstOrDefault() = ObjA;
SelectedListObjA = new List<ObjType>();
ObjType ObjA = new ObjType();
任何人都可以向我解釋爲什麼上述說法是錯誤的。這是投擲The Left hand side of an assignment must be a variable...
無法替換列表中的特定對象?
SelectedListObjA.Where(x => x.FieldA == "ABC").FirstOrDefault() = ObjA;
SelectedListObjA = new List<ObjType>();
ObjType ObjA = new ObjType();
任何人都可以向我解釋爲什麼上述說法是錯誤的。這是投擲The Left hand side of an assignment must be a variable...
無法替換列表中的特定對象?
從FirstOrDefault
得到的結果是源中的第一個元素。所以你得到一個對象。但分配只能在variable, property or indexer上進行。如果你想替換對象,你可以使用這樣的東西:
var tmp = SelectedListObjA.Where(x => x.FieldA == "ABC").FirstOrDefault();
if (tmp != null) { // If tmp is reference type. Would be better to use default()
var index = SelectedListObjA.IndexOf(tmp);
SelectedListObjA[index] = ObjA;
}
你不能這樣做。
FirstOrDefault可以返回null。你認爲會發生什麼?該值應該添加到列表中嗎?
如果FirstOrDefault將返回一個對象,它將只是對新變量中對象的引用。對該變量的賦值不會改變列表,而只是變量指向的引用。名單將保持不變。
如果您想要替換列表中的項目,您將需要找到該項目的索引並用該新索引替換該索引處的對象。
var objectToReplace = SelectedListObjA.Where(x => x.FieldA == "ABC").FirstOrDefault();
if (objectToReplace != null)
{
SelectedListObjA[SelectedListObjA.IndexOf(objectToRelplace)] = ObjA;
}
else
{
SelectedListObjA.Add(ObjA);
}
乾杯
托馬斯
我想'FirstOrDefault()'會返回對象? –
基本上我會檢索一個obj,其中'FieldA =='ABC''和第一個出現將被'ObjA'替代。 'ObjA.FieldA'將例如'CDE'....基本上它是一個不同的對象 –
'ObjA = SelectedListObjA.Where(x => x.FieldA ==「ABC」)。FirstOrDefault()' – Mairaj