我有一个列表objects
,我需要搜索列表中是否存在一个值,如果存在,我需要将object
找到的属性之一设置为另一个值,是否可以在不搜索List
两次的情况下执行此操作?(一次检查object
列表中是否存在,一次设置其值)
例如:
class myObject
{
public string FieldNumber {get;set;}
public string FieldValue {get;set;}
}
var myValues = new List<myObject>();
myValues.Add(new myObject{ FieldNumber = "100A"});
myValues.Add(new myObject{ FieldNumber = "100B"});
var allValues = new List<myObject>();
allValues.Add(new myObject{ FieldNumber = "200A", FieldValue = "3"});
allValues.Add(new myObject{ FieldNumber = "100B", FieldValue = "C"});
foreach(var obj in allValues)
{
GetAndSetField(myValues, obj.FieldNumber, obj.FieldValue);
}
void GetAndSetField(List<myObject> list, string fieldNumber, string fieldValue)
{
var tempField = list.FirstOrDefault(x => x.FieldNumber.Equals(fieldNumber));
if(tempField != null)
list.FirstOrDefault(x => x.FieldNumber.Equals(fieldNumber)).FieldValue = fieldValue;
}
是否可以更改GetAndSetField
方法中的代码,以便在找到时不会搜索列表两次object
?或者也许我做错了,有一个更简单的方法......