Допустим, у меня есть следующий объект:Сформировать все возможные комбинации объектов из другого объекта
public class Foo
{
public int? Prop1 { get; set; }
public int? Prop2 { get; set; }
public int? Prop3 { get; set; }
}
инициализируется так:
var test = new Foo(){
Prop1 = 10,
Prop2 = 20,
Prop3 = 30
}
Я хотел бы, чтобы создать список всех возможных комбинаций эти атрибуты. Следующий список был бы возможный результат (в основном список всех возможных комбинаций):
List[0] = new Foo{Prop1 = 10, Prop2 = null, Prop3 = null};
List[1] = new Foo{Prop1 = null, Prop2 = 20, Prop3 = null}
List[2] = new Foo{Prop1 = null, Prop2 = null, Prop3 = 30};
List[3] = new Foo{Prop1 = 10, Prop2 = 20, Prop3 = null};
List[4] = new Foo{Prop1 = 10, Prop2 = null, Prop3 = 30};
List[5] = new Foo{Prop1 = null, Prop2 = 20, Prop3 = 30};
List[6] = new Foo{Prop1 = 10, Prop2 = 20, Prop3 = 30};
Я думал, с помощью LINQ или отражения, чтобы попытаться управлять всеми свойствами и делать .... что-то. Конечно, это можно сделать с помощью большого количества ручных добавлений, получая все комбинации вручную и заканчивая длинным кодом, но я уверен, что есть более простой способ добиться этого, поэтому ... любая помощь будет оценена по достоинству.
Благодаря
Является ли порядок комбинаций важным? –
Что вы имеете в виду как порядок комбинаций? если вы имеете в виду, что мне нужен этот список [0] из примера в позиции 0, нет, это не важно, это просто пример. Значения внутри являются свойствами объекта, поэтому вы не можете их изменить. – Thal
Да Я имел в виду порядок элементов в конечном списке - мой ответ генерирует те же комбинации, что и ваш пример выше, но в другом порядке. –