我有一个对象列表。这些对象中的每一个都有一个Name
属性,而ObservablePairCollection
只是一个自定义字典,其工作方式与字典完全一样,具有键/值对。查找具有给定属性值的列表中的对象,然后查找字典值
给定两个字符串,一个用于名称和一个用于键,我想查找首先匹配给定名称的对象,然后从该模型的字典中选择与给定键值匹配的pair
。
示例:给定名称的字符串“model1”和该键的“Latitude”,应该找到名称为property的对象等于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,但不是一个大问题,如果不行。
如果我理解正确的,你需要的是这样的:'models.Single(M => m.Name == “someName”)Fields.Single(F => f.Key ==“Latitude”);' – Nino
@Nino为什么会y在字典中搜索密钥时,是否使用'Single'? – InBetween
@InBetween,你说得对,'First()'是更好的方法。 – Nino