我有地图:如何通过一个密钥字段从Map中获取值?
public class MyKey {
...
private long id;
...
}
Map<MyKey, String> myMap;
如何通过MyKey.id
场得到myMap
价值?
我有地图:如何通过一个密钥字段从Map中获取值?
public class MyKey {
...
private long id;
...
}
Map<MyKey, String> myMap;
如何通过MyKey.id
场得到myMap
价值?
请在C#中找到答复。我认为我们可以使用Linq表达式实现相同的功能。请在下面找到示例代码,希望它会有所帮助。
public class MyKey
{
public long ID { get; set; }
}
static void Main(string[] args)
{
Dictionary<MyKey, String> myMap = new Dictionary<MyKey, string>();
myMap.Add(new MyKey() { ID = 100 }, "One");
myMap.Add(new MyKey() { ID = 200 }, "Two");
myMap.Add(new MyKey() { ID = 300 }, "Three");
long searchKey = 200;
string value = myMap[myMap.Keys.FirstOrDefault(x => x.ID == searchKey)];
}
你要么必须遍历所有条目找到匹配或建立一个新的地图,关键是MyKey.id – Eran
在'O(1)',你不能。除非你的'MyKey'基于'MyKey.id'实现'equals'和'hashCode';在这种情况下,你可以用'MyKey'和相应的'id'调用'get'。 –
您必须重写'equals'和'hashCode'方法。 –