Member 12153456 Ответов: 1

Как я могу преобразовать var в list & lt;string>?


- Эй! Мне действительно нужна помощь.
У меня есть функция для генерации комбинаций. Вот он
public static IEnumerable<IEnumerable<T>> GetKCombs<T>(IEnumerable<T> list, int length) where T : IComparable
{
    if (length == 1) return list.Select(t => new T[] { t });
    return GetKCombs(list, length - 1)
        .SelectMany(t => list.Where(o => o.CompareTo(t.Last()) > 0),
            (t1, t2) => t1.Concat(new T[] { t2 }));
}


использование:
var result = GetKCombs(new int[] {1,2,3,4,5},3);

Проблема заключается в следующем :Я хочу преобразовать var в List & lt;string>, и.ToList () не работает должным образом.
Пожалуйста помочь.

Что я уже пробовал:

Ну, я уже пробовал использовать метод.Список():
результат.Список()
но в нем есть что-то странное.
Во-вторых, я написал следующее:
List & lt;string & gt; vectors = новый список & lt;string>();
foreach (var res в результате)
векторные иллюстрации.Добавить (рез.Метод toString());
но это тоже не сработало должным образом.

sankholia

Я не уверен, чего вы пытаетесь достичь. Если вы можете сформулировать свою проблему, вам будет легче ответить или предложить альтернативное решение.

Ralf Meier

Извините - я не понимаю вашей цели.
Попробуйте объяснить, чего вы хотите добиться на некоторых примерах ...

Member 12153456

ладно, я постараюсь внести ясность.
у нас есть, например, набор {1,2,3,4,5}, и я хочу сгенерировать все комбинации длины 3 с помощью функции GetKComb следующим образом:
var result = GetKComb(new int [] {1,2,3,4,5}, 3)
результат состоит из чего-то не пойму чего, но в результате получается 10 объектов. Я хочу получить из результирующих строк длиной 3 в список "строка", но не знаю как.

Member 12153456

и я хочу, чтобы список "строка" состоял из 10 строк, которые "{1,2,3}", "{1,2,4}" и т. д.

1 Ответов

Рейтинг:
10

Member 12153456

что ж, решение было простым:

List<string> vectors = new List<string>();
var result = GetKCombs(new int[] {1,2,3,4,5}, 3);
foreach (var item in result)
{
    string s = string.Join(",", item);
    vectors.Add(s);
}