Linq - объединение словаря, в котором KeyValuePair.Value является самой коллекцией - PullRequest
0 голосов
/ 19 июля 2011

пытаясь понять, как должны выглядеть соединения, для примера ниже. Любая помощь, определяющая, можно ли написать linq для следующего, будет очень признательна!

        List<string> col1;
        Dictionary<string, List<string>> join2;

Я хочу выбрать все ключи из словаря, где элементы в столбце col1 существуют в коллекции списка значений словаря.

        IEnumerable<string> query = from c1 in col1
                                    join kvp in join2 on c1 equals kvp.Value
                                    where c1 == "foo"
                                    orderby kvp.Key
                                    select kvp.Key;

Очевидно, что вышеприведенное не работает, так как kvp.Value - это список, а не строка, равная c1 - любые указатели?

Ответы [ 3 ]

1 голос
/ 19 июля 2011

Я не уверен, зачем нужно объединение ... если вы выберете "foo", то следующее даст тот же результат:

        IEnumerable<string> query = from kvp in join2
                                where kvp.Value.Contains ("foo")
                                orderby kvp.Key
                                select kvp.Key;

В качестве альтернативы объединению

        IEnumerable<string> query = from c1 in col1 where c1 == "foo" from kvp in join2 
                                where kvp.Value.Contains (c1) 
                                orderby kvp.Key
                                select kvp.Key;
0 голосов
/ 19 июля 2011
var result = from c1 in col1.Keys
             from c2 in col1.Values
             where c1 == c2
             select c1;
0 голосов
/ 19 июля 2011
from kvp in dict
from e in kvp.Value
... // join on e here
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...