Есть ли способ получить все возможные комбинации в ObservableCollection?
У меня есть такая модель:
public string MyProperty { get; set; }
public string MyProperty2 { get; set; }
public string MyProperty3 { get; set; }
public string MyProperty4 { get; set; }
public string MyProperty5 { get; set; }
public string MyProperty6 { get; set; }
public string MyProperty7 { get; set; }
public string MyProperty8 { get; set; }
И я заполняю эту модель данными из электронной таблицы,но некоторые значения имеют нулевые или пустые значения (которые мне нужно исключить).Есть ли способ получить все возможные комбинации с одним и тем же шаблоном?
Например, все комбинации со значениями, отличными от 0, во всех свойствах и все комбинации, когда есть только одно свойство со значением иостальные ноль и т. д.
Пока у меня есть что-то вроде этого:
var group1 = _sourceStructure.Where(c => c.MyProperty != "0" && c.MyProperty2 != "0" && c.MyProperty3 != "0" && c.MyProperty4 != "0"
&& c.MyProperty5 != "0" && c.MyProperty6 != "0" && c.MyProperty7 != "0" && c.MyProperty8 != "0");
Но с этим мне нужно использовать более 30 случаев для оценки, есть ли способ получить всевозможные комбинации с использованием LINQ или другого решения?
Я хочу создать запрос SQL со значениями из коллекции, но если значение имеет значение 0 или пусто, я не добавлю это значение в запрос.Я хочу получить все комбинации с одинаковым шаблоном, чтобы можно было поместить все элементы с одинаковым шаблоном в IN в SQL.
Выходные данные будут выглядеть примерно так:
string query = @"Select field1, field2, field3, fieldn FROM table WHERE "
query = query + "field1 = " + _sourceStructure.MyProperty1;
query = query + "fieldN = " + _sourceStructure.MyPropertyN;
В принципе, мне все равно, какое это значение.Мне нужно только сгруппировать коллекцию со всеми возможными комбинациями с одним и тем же шаблоном.
Пример данных из исходного файла в Excel:
MyProperty1 MyPropert2 MyPropertN
Row1 0 1 3
Row2 2 0 6
Row3 0 5 9
Row4 9 9 4
Row5 4 3 6
Row6 0 0 0
Вот, например, я ожидаючто Row1 и Row3 будут в одной группе (значения не одинаковы, но «структура» одинакова), а затем Row4 и Row5 будут другой группой, Row6 другой, а Row2 другой.