Одна из главных особенностей EntityFramework - это то, что он создает для вас SQL и позволяет вам манипулировать объектами вместо SQL. Существуют и другие библиотеки, такие как Dapper, которые быстрее используют прямую SQL, если у вас есть выбор. Если вам нужно использовать EntityFramework, вам лучше написать Linq.
При использовании Linq вместо SQL вы все равно можете создавать запросы Dynami c, используя IQueryable. Это позволяет вам создавать запросы без предварительного извлечения данных из базы данных.
Не зная, что вы пытаетесь сделать со своим приложением, я могу предложить лишь несколько советов, которые можно попробовать. В ответе ниже я делаю некоторые предположения о наименовании того, как настроены ваши сущности.
Для получения списка членств из таблицы членства, предположим, что ваша сущность для этой таблицы называется Членство:
IQueryable<Membership> memberships = context.Memberships;
Это ваш
query.Append("SELECT * ");
query.Append("FROM [dbo].[membership] mm \n");
Для ваших фильтров вы, вероятно, захотите поместить их в список.
С этого момента и происходит динамика c отчасти это происходит. Если у вас есть таблица для вашего ComboRule с именем [ComboRuleTable1], а другая - с именем [ComboRuleTable2], но вам необходимо выполнить запрос на основе ввода из ComboRuleTableName.Text, вы можете сделать что-то вроде этого.
var filters = new List<string>() { "name1", "name2" };
// Get which table you should join to
switch (ComboRuleTable1)
{
// Join to tables and get filtered data
case "ComboRuleTable1":
memberships = memberships.ComboRuleTable1.Where(x => filters.Contains(x.PlatFormName));
break;
case "ComboRuleTable2":
memberships = memberships.ComboRuleTable2.Where(x => filters.Contains(x.PlatFormName));
break;
default:
break;
}
// This pulls the data from the database
var result = memberships.ToList();
Отчасти это зависит от того, как настроена ваша EntityFramework.
Надеюсь, это поможет.