私はコンビネーションの問題を抱えています。私は何をしようとしている実行時にすべてを取得
public abstract class DataField : IDataField
{
public string Name { get; set; }
public List<string> Values { get; set; }
}
がList<DataField>
オブジェクトのすべての可能な組み合わせを得ることです:私が得たもの は基本的にname
を保持Data
クラスとvalues
のリストです。どのような私がこれまで試したことはある:
// Get dataFields with values
List<IDataField> propertyDataFields = mDataFields.Where(x => x.Values.Count > 0).ToList();
var props = GetPropertiesList(propertyDataFields, 0, propertyDataFields.Count - 1, new List<List<FieldProperties>>());
private static List<List<FieldProperties>> GetPropertiesList(List<IDataField> propertyDataFields, int listPosition, int position, List<List<FieldProperties>> fieldPropertiesList)
{
var fieldProperties = new List<FieldProperties>();
foreach (var item in propertyDataFields[position].Values)
{
if (position == -1)
{
GetPropertiesList(propertyDataFields, listPosition + 1, propertyDataFields.Count - 1, fieldPropertiesList);
}
fieldProperties.Add(new FieldProperties(propertyDataFields[position].Name, item));
GetProperties(propertyDataFields, position - 1, fieldProperties, fieldPropertiesList);
}
return fieldPropertiesList;
}
private static void GetProperties(List<IDataField> propertyDataFields, int position, List<FieldProperties> fieldProperties, List<List<FieldProperties>> fieldPropertiesList)
{
if (position == -1)
{
fieldPropertiesList.Add(fieldProperties);
}
foreach (var item in propertyDataFields[position].Values)
{
fieldProperties.Add(new FieldProperties(propertyDataFields[position].Name, item));
GetProperties(propertyDataFields, position - 1, fieldProperties, fieldPropertiesList);
}
}
終わりに、私はFieldProperties
オブジェクトのリストのリストを必要としています。考え方はリストの最後のdataField
で始まり、毎回foreach
を使用してループしますが、最初のリストにはたとえば1
のエントリしかない場合は機能しません。たぶんソート:Values
Count
アイデアですか?
編集:FieldProperties
は、別のdll imを使用しているクラスです。私はすべてのDataField.Valueのインスタンスを作成する必要があります。
szenarioは:List<IDataField>
です。
私はList<List<FieldProperties>>
を、すべての可能なDataFieldの組み合わせで作成したいと考えています。
は、あなたが入力の例を追加できますし、それが出力に一致するのか? – Maarten
'FieldProperties'とは何ですか?あなたの*実際の要件は何ですか?私は、いくつかの問題を正直に言うと、恐ろしい技術的解決策のように思えます。 – MarioDS
それでは、7つの 'DataField'オブジェクトが必要です。 Valuesフィールドには、1,2,3、1,2、1,3、2,3、1、2、3がありますか?これは非常に奇妙なことを望んでいるように思えるので、私が正しく理解することを確認したい。また、私はMarioDSに、これは少し違った問題に対する悪い解決策のように思えるだろう。 – Chris