Как отфильтровать список кортежей на основе сопоставления одного элемента кортежа с другим списком с помощью лямбда-выражения в C #? - PullRequest
0 голосов
/ 23 мая 2019

У меня есть список кортежей:

List<Tuple<string, string>> keys = { ("AB","12"), ("BC","23"), ("XY","00")}

У меня есть другая перечисляемая коллекция строк:

IEnumerable<string> results = {"ABC", "BCD", "ZZXY"}

Япытаясь написать лямбда-выражение, которое дало бы мне список всех ключей, так что есть соответствующий результат (в списке results), который начинается с keys.item1.

Итак, наконец, я хочуследующее:

List<Tuple<string, string>> finalKeys = { ("AB","12"), ("BC","23") }

Ответы [ 2 ]

0 голосов
/ 23 мая 2019

Попробуйте:

         List<Tuple<string, string>> keys = new List<Tuple<string, string>>
         {
            new Tuple<string, string>("AB", "12"),
            new Tuple<string, string>("BC", "23"),
            new Tuple<string, string>("XY", "00")
         };

         IEnumerable<string> results = new List<string> {"ABC", "BCD", "ZZXY"};

         var finalKeys = keys.Where(f => results.Any(m => m.StartsWith(f.Item1))).ToList();
0 голосов
/ 23 мая 2019

Использование оператора Where с соответствующим вызовом Any:

List<Tuple<string, string>> finalKeys = keys
    .Where(key => results.Any(result => result.StartsWith(key.Item1)))
    .ToList();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...