Используйте LINQ, чтобы опустить некоторые записи в части значения словаря и спроецировать это в новый двузначный, сохраняя оригинальные ключи - PullRequest
0 голосов
/ 18 ноября 2009

У меня есть общий диктонар, который оформляется следующим образом:

Dictionary<object, IList<ISomeInterface>> dictionary1 = new Dictionary<object,    IList<ISomeInterface>>();  

Если бы я хотел опустить некоторые элементы списка для произвольных ключей (то есть элементов, которые находятся в списке, содержащемся в части значения каждой из пар ключ-значение, составляющих словарь), при некотором произвольном условии (допустим, опускание списка элементы, в которых элемент списка содержит строку "abc")

Я ожидал бы, что смогу создать / спроектировать в новый словарь, который будет содержать записи, которые содержат списки БЕЗ тех элементов, чье имя содержит "abc"

Как мне добиться этого с помощью лямбда-выражения?

Я пытался что-то вроде этого:

var result1 = dictionary1.Where (x => x.Value == x.Value.Select (y =>! Y.contains ("abc"));

Ответы [ 2 ]

1 голос
/ 18 ноября 2009

Тебе нужен еще один словарь? Попробуйте это:

var result = original.ToDictionary(
    pair => pair.Key, // Key in result is key in original
    value => pair.Value  // Value in result is query on original value
                 .Where(item => !item.Contains("abc").ToList());

РЕДАКТИРОВАТЬ: VB согласно комментарию:

someDictionary.ToDictionary(Function(x) x.key, _ 
            Function(y) y.Value.Where(not y.Value contains("abc").ToList())
0 голосов
/ 18 ноября 2009
var result1 = dictionary1.Select(x => 
     {
          return new KeyValuePair<object, IList<ISomeInterface>>(
                     x.Key, 
                     x.Value.Where(y => y.Contains("abc")).ToList());
     }).ToDictionary(item => item.Key, item => item.Value);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...