Я использую объект данных из БД и доменную службу.
Я использую сгенерированный код .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 && e.Project_ID == projectID)];
}
и т. д. с другими переменными.
Существует много возможных комбинаций, поэтому я и былпытаясь использовать перегрузку для .Where (строка, параметр [])
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);
Однако, это только дает ошибку, потому что тогда все имена полей предположительно выходят за рамки/ несуществующие.Даже если в строке используются сотрудники. [Field_name], они «не существуют»
Кто-нибудь знает способ использования условных выражений внутри .Где часть запроса?Или как создать какую-нибудь переменную или объект, содержащий мой запрос, чтобы я мог просто разобрать его?