Это будет немного абстрактно, но у меня есть такой метод:
private int[] ReturnLogicalGroupingAForOrderedElements(List<int> elements) {
//sql query or linq query
//returns an int[] in case there are more than one matching set.
}
Допустим, переданный список содержит следующие элементы: 3,6 и 9. Мне нужно найти точно такой же список, элементы в том же порядке, разделяющие одну и ту же логическую группу (независимо от того, что это), из источника данных.
У меня есть таблица данных со следующими столбцами (все значения int):
LogicalGroupingA, LogicalGroupingB, Element, ElementOrder
Мне нужно найти и идентифицировать, что все вышеперечисленные элементы (3,6,9) существуют в нескольких строках, разделяя одну и ту же логическую группу. Пример:
7,1,3,1
7,1,6,2
7,1,9,3
Если все они найдены, я хочу вернуть значение из LogicalGroupingA, которое равно 7.
Но учтите, что может быть другой набор строк (совместно использующих одну и ту же логическую группу):
4,1,3,1
4,1,6,2
4,1,9,3
4,1,5,4
Запрос должен возвращать желаемое значение только в том случае, если полная серия элементов соответствует запрашиваемой (здесь первые три элемента совпадают с запрашиваемым списком, но поскольку существует четвертый элемент, он не равен). Предположим, что датированные строки смешаны. LogicalGroupingA может содержать множество LogicalGroupingB, которые также могут содержать много элементов.
Первоначально у меня была очень простая установка данных, в которой столбец содержал строку типа «3,6,9», которую мне пришлось бы анализировать в моей логике. Целью создания этого нового числового набора данных было сделать его как можно быстрее (теоретически). Я открыт для альтернативной структуры данных, если она может улучшить это, но в основном я прошу помощи в формировании желаемого запроса (sql или linq) для приведенной выше таблицы.
РЕДАКТИРОВАТЬ: Может быть, немного плохое время размещения вопроса, так как я уйду из своей машины разработчика в течение следующих двух дней, но будьте уверены, я дам правильные очки и голоса (и комментарии), как только я вернусь и проверил предложения. Спасибо за ваше терпение.