比方說,我有以下對象:從另一個對象生成所有可能的對象組合
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
是的,我的意思是最終名單中的元素順序 - 我的答案與上面的示例產生相同的組合,但順序不同。 –