#c#
#c#
Вопрос:
У меня возникли проблемы с преобразованием фрагмента кода для работы с .NET3.5.
static Dictionary<string, object> dictionary = new Dictionary<string, object>
{
{"key","value"},
{"key2","value2"},
};
public static string Process(String _string)
{
var levels = new Dictionary<string, object>
{
{ "", "" },
{ "-", "Light" },
{ " ", "Heavy" }
};
var search = string.Join("and ", from l in levels.Keys
from w in dictionary.Keys
join m in _string.Split() on string.Concat(l, w) equals m
select string.Concat(levels[l], dictionary[w]));
return search;
}
При попытке компиляции я получаю две ошибки…
Аргумент 2: невозможно преобразовать из ‘System.Коллекции.Общий.IEnumerable’ в ‘строка[]’
и
Наилучший перегруженный метод соответствует ‘string.Соединение (строка, строка[])’ имеет некоторые недопустимые аргументы
Я думал о добавлении.toArray(), но я не знал, где.
Комментарии:
1. Как насчет в самом конце, после выбора?
2. @BradleyDotNET, нет … к сожалению, все те же ошибки.
Ответ №1:
Используйте ToArray
так:
var search = string.Join("and ", (from l in levels.Keys
from w in dictionary.Keys
join m in _string.Split() on string.Concat(l, w) equals m
select string.Concat(levels[l], dictionary[w])).ToArray());
Комментарии:
1. Согласен, но также это было бы намного чище, если бы оператор linq был назначен его собственной переменной.
Ответ №2:
Заключите ваш запрос LINQ (выберите из … ) в круглые скобки и вызовите .toArray() на нем.