【发布时间】:2013-06-28 18:29:55
【问题描述】:
我有一个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 时不会搜索列表两次?
或者也许我做的完全错误,还有更简单的方法......
【问题讨论】: