我有一个对象列表。这些对象中的每一个都有一个Name
财产,以及ObservablePairCollection
这只是一个自定义字典,其工作方式与字典完全相同,具有键/值对。
给定两个字符串,一个用于名称,一个用于键,我想找到第一个与给定名称匹配的对象,然后选择pair
从该模型的字典中匹配给定的键值。
示例:给定字符串“model1”作为名称,“Latitude”作为键,一个对象的 name 属性等于model1
应该找到,然后应该返回对象字典中的键/值对,其中键等于Latitude
.
目前我可以做第一部分来匹配Name
通过使用:
private ObservableCollection<ModelBase> models;
//add objects to models
string stringToFind = "model1";
models.Single(m => m.Name == stringToFind);
所以,这会返回一个对象Name
财产等于model1
.
但我无法找到正确的语句来获取键/值对。
这是该类的相关部分:
private ObservablePairCollection<string, string> _fields = new ObservablePairCollection<string, string>();
public ObservablePairCollection<string, string> Fields
{
get { return _fields; }
set { _fields = value; OnPropertyChanged("Fields"); }
}
private string _name;
public string Name
{
get { return _name; }
protected set
{
if (_name != value)
{
_name = value;
OnPropertyChanged("Name");
}
}
}
如果可能的话我想使用 LINQ,但如果没有的话也没什么大不了的。
首先,为什么Single
?必须只有一个对象具有给定的Name
你必须enforce它在这个特定的代码中吗?请记住Single
代价高昂,因为它将枚举整个集合以确保找到的对象是唯一的。
如果您只是想找到第一个(如果有的话),那么只需使用适当命名的First
扩展方法:
models.First(m => m.Name == stringToFind);
好的,这样就返回了具有给定值的第一个对象Name
,如果有的话,你只需要过滤Fields
财产权:
var pair = models.First(m => m.Name == stringToFind)
?.Fields
.First(f => f.Key = keyToFind);
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)