比方说,我有以下对象:从另一个对象生成所有可能的对象组合
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或反射来尝试导航的所有属性和做什么....思考。当然,这可以通过大量的手动添加来完成,手动获取所有组合,并以长代码结束,但我相信有一种更简单的方法来实现这一点,所以..任何帮助将不胜感激。
感谢
组合的顺序是否重要? –
你是什么意思作为组合的顺序?如果你的意思是我需要那个例子中的List [0]是在0的位置,否则不重要,这只是一个例子。里面的值是对象的属性,所以你不能改变它们。 – Thal
是的,我的意思是最终名单中的元素顺序 - 我的答案与上面的示例产生相同的组合,但顺序不同。 –