#sql #linq #entity-framework #frameworks #entity
#sql #linq #entity-framework #фреймворки #сущность
Вопрос:
Я использую объект данных из базы данных и службу домена.
Я использую сгенерированный .net-код для простых запросов, например
public IQueryable<employee> GetEmployeesByLocale(int localeID)
{
return ObjectContext.employees.Where(e => e.Locale_ID == localeID);
}
Теперь мне нужно изменить .Соответственно, раздел Where, поэтому:
if (localeID > 0)
{
['Where' should be like .Where(e => e.Locale_ID == localeID)];
}
if (projectID > 0)
{
[IF localeID == 0, 'Where' should be like .Where(e => e.Project_ID == projectID)
Else if localeID > 0, Where should use both, sort of .Where(e => e.Locale_ID == localeID amp;amp; e.Project_ID == projectID)];
}
и так далее с другими переменными.
Существует много возможных комбинаций, поэтому я пытался использовать перегрузку для .Где(строка, параметр [])
string q = string.Empty;
if (localeID > 0)
{
q = "Locale_ID = " localeID.ToString();
}
if (projectID > 0)
{
q = q == string.Empty ? "Project_ID = " projectID.ToString() : q " and " "Project_ID = " projectID.ToString();
}
... (for other variables and fields)
...
System.Data.Objects.ObjectParameter[] param = new System.Data.Objects.ObjectParameter[1];
param[0] = new System.Data.Objects.ObjectParameter("param", 1);
return ObjectContext.employees.Where(q, param);
Однако это только выдает ошибку, потому что тогда все имена полей предположительно выходят за рамки / не существуют. Даже если использовать employees.[field_name] в строке они «не существуют»
Кто-нибудь знает способ использования условных выражений внутри .Где часть запроса? Или как создать некоторый переменный файл или объект, содержащий мой запрос, чтобы я мог просто проанализировать его?
Ответ №1:
Вы можете использовать
IQueryable<Employee> emp = ObjectContext.employees;
if (localeID > 0)
emp=emp.Where(e => e.Locale_ID == localeID).AsQueryable();
if (projectID > 0)
emp=emp.Where(e => e.Project_ID == projectID).AsQueryable();
Это объединит предложения where
Комментарии:
1. большое вам спасибо. Я не смог получить какую-либо информацию, которая казалась полезной где-либо еще.