Как найти значение столбца словаря, содержащее мое значение списка или нет, используя запрос в C # - PullRequest
0 голосов
/ 29 мая 2018

У меня есть список значений

list1[110,120,130]

Я хочу проверить в словаре, содержит ли значение моего столбца таблицы словаря, например

110_abc_ro
120_cfg_go
130_dfg_lo
110_abc_io
170_cfg_jo

, значение списка или нет.Я хочу вывод, как 110_abc_ro,110_abc_io для значения списка 110

Ответы [ 4 ]

0 голосов
/ 29 мая 2018

Вот вам простое решение:

int[] list1 = { 110, 120, 130 };
List<string> dict = new List<string> { "110_abc_ro", "120_cfg_go", "130_dfg_lo", "110_abc_io", "170_cfg_jo" };

for (int i = 0; i < list1.Length; i++)
{
    string str = "Values from dictionary containing " + list1[i] + ":\n";
    str += String.Concat(dict.Where(val => val.Contains(list1[i].ToString())).Select(val => val + ", "));
    Console.Write(str);
}
0 голосов
/ 29 мая 2018

Попробуйте это:

string result= "";
list1.ForEach(item => {
yourDictionary.ToList().ForEach
(
    pair =>
    {
        if (pair.Value.Contains(item.ToString()))
        {
            result = result + pair.Value + ", ";
        }
    }
);
});
0 голосов
/ 29 мая 2018

Вы можете использовать String.Join(), чтобы объединить все значения, которые соответствуют вашему списку int

В соответствии с MSDN этот метод Concatenates все элементы коллекции строк,используя указанный разделитель между каждым элементом.

например:

  string values = String.Join(",", yourDictionary.Where(x => list.Any(ele => x.Value.Contains(ele.ToString()))).Select(x => x.Value).ToList());
0 голосов
/ 29 мая 2018

Поскольку я не могу сказать, каково ваше имя словаря / тип ключа из вопроса, я дошел только до этого.Для каждого элемента списка (110, 120 и т. Д.) Вы теперь перебираете записи в своем словаре.Всякий раз, когда значение из вашего словаря содержит значение, которое вы перебираете из списка, оно записывает его в строку, которую вы затем можете отправить / записать / что-то еще.

foreach (int i in list1)
{
    string output = "";

    foreach (KeyValuePair<var, string> kvp in yourDictionary)
    {
        if (kvp.Value.Contains(i.ToString()))
        {
            output += kvp.Value + ", ";
        }
    }

    //print your outputstring here.
}

Редактировать:

Вы можете использовать yourDictionary.Values.Select(x => x.Value.Contains(i.ToString())); вместо foreach.Пользуясь небольшим ответом Люцифера , вы можете превратить его в следующее:

foreach (int i in list1)
{
    string output = String.Join(",", yourDictionary.Values.Select(x => x.Value.Contains(i.ToString())));
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...