Прежде всего, я не прошу код или кого-либо, кто выполняет мою работу за меня.Просто нужно несколько идей о том, как можно применять такие правила.
У меня есть простое представление, которое отправляет некоторые данные в контроллер по уникальной паре (ключ - значение).Контроллер получает эти данные в словарь demoData.
В моей базе данных у меня есть простая таблица (Products) с идентификатором и именем.
В моей базе данных у меня также есть таблица (Правила), который содержит data_key, data_value и product_ID.Идея этой таблицы заключается в том, что когда контроллер получает значения данных, он проверяет эту таблицу и, если IF data_key равен сохраненному data_value, он добавляет product_ID к новому dict.Примерно так:
public Dictionary<int, string> testC([FromBody]Dictionary<string,string> demoData)
{
var getRules = AsDynamic(App.Data["Rules"]);
// contains Link_datakey, Link_datavalue, Link_product
var getProducts = AsDynamic(App.Data["Products"]);
// contains Product_id, Product_name
Dictionary<int, string> testdict = new Dictionary<int, string>();
var product = 0;
foreach(var r in getRules){
if (demoData.ContainsKey(r.Link_datakey)) {
if (demoData[r.Link_datakey] == r.Link_datavalue) {
product = Convert.ToInt32(r.Link_product);
if (!testdict.ContainsKey(product)) {
testdict.Add(product, getProducts.Where(i => i.id_source == r.Link_product).First().Product_name);
}
}
}
}
return testdict;
}
Это прекрасно работает, но есть два серьезных ограничения:
Правило должно быть "равного" типа.Если бы я хотел что-то вроде> или <, мне нужно было бы создать разные условия if для каждого из параметров, поскольку оператор не может быть переменным (я полагаю) </p>
Это было создано при условиитолько одно правило будет проверено для каждого цикла.Теперь мне нужно проверить несколько правил, например:
if (some_datakey
ИКоличество правил должно быть переменным ... Иногда это только одно, но в других продуктах это может потребовать 2 или 3.
Могу ли я спросить некоторые мнения о том, как это реализовать?Первым делом будет структура таблицы правил.Больше не будет достаточно простого продукта «ключ - значение».Возможно, что-то вроде rule_group_id - key - value, чтобы можно было сгруппировать правила, а затем новую таблицу с rule_group_id и продукт, который нужно добавить, если все условия возвращают true.Тогда в циклах должна быть предусмотрена проверка нескольких правил, и здесь я понятия не имею, как поступить.Любые идеи, которыми вы можете поделиться?