У меня есть карта:Как получить значение с карты одним полем ключа?
public class MyKey {
...
private long id;
...
}
Map<MyKey, String> myMap;
Как получить значение из myMap
на MyKey.id
поле?
У меня есть карта:Как получить значение с карты одним полем ключа?
public class MyKey {
...
private long id;
...
}
Map<MyKey, String> myMap;
Как получить значение из myMap
на MyKey.id
поле?
Ответьте на 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' не реализует' equals' и 'hashCode' на основе' MyKey.id'; в этом случае вы можете просто вызвать 'get' с' MyKey' с соответствующим 'id'. –
Вы должны переопределить методы 'equals' и' hashCode'. –