Как я могу получить Объект, хранящийся в ist в форме KeyValuePair в C #? - PullRequest
0 голосов
/ 09 октября 2018

У меня есть следующее List с KeyValuePair в качестве данных.

using SerialPort as PORT
List<KeyValuePair<string, PORT>> myPortList = new List<KeyValuePair<string, PORT>>();

Я добавил элементы в list следующим образом

PORT sp1 = new PORT("COM1", 9200, Parity.None, 8, StopBits.One);
PORT sp2 = new PORT("COM4", 9200, Parity.None, 8, StopBits.One);
myPortList.Add(new KeyValuePair<string,PORT>("COM1",sp1));
myPortList.Add(new KeyValuePair<string,PORT>("COM4",sp2));

Как получить объект SerialPort, сохраненный в списке, используяключ?
Например:
Необходимо получить value sp2 , используя key "COM4" из list myPortList ?

Ответы [ 3 ]

0 голосов
/ 09 октября 2018

Вы можете использовать Linq :

myPortList.Fist(kp => kp.Key.Equals("COM4"));

Если вы можете сделать это, используйте Dictionary, вместо него будет проще получать элементы из него.

Пример для Dictionary:

Dictionary<string, PORT> myPortDict = new Dictionary<string, PORT>();

PORT sp2 = new PORT("COM4", 9200, Parity.None, 8, StopBits.One);
myPortDict.Add("COM4",sp1);

//then to retrive:

dc.TryGetValue("COM4", out PORT myPort);

//then use myPort
0 голосов
/ 09 октября 2018

Вы можете использовать LINQ.Попробуйте, может быть, вам поможет.

var result = myPortList.Find(x => x.Key == "COM4");
var value = result.Value;
0 голосов
/ 09 октября 2018

Вы можете использовать Linq для этого:

myPortList.FirstOrDefault(x => x.Key == "COM4").Value

Может быть проще использовать словарь вместо списка KeyValuePair элементов, тогда вы можете получить доступ к элементам более прямым способом.

...