Я хотел бы создать один запрос, который «корректирует» предложение where на основе кортежа.Первый элемент в кортеже содержит значение перечисления, указывающее поле для фильтрации.Второй элемент кортежа - это значение фильтра.
Обратите внимание, что приведенный ниже запрос не работает:
var query = from p in db.Categories
where ( QueryBy.Item1 == CategoryFields.Name && p.Name == (string)(QueryBy.Item2) ) ||
( QueryBy.Item1 == CategoryFields.Id && p.Id == (long)(QueryBy.Item2) ) ||
( QueryBy.Item1 == CategoryFields.Description && p.Description == (string)(QueryBy.Item2) ) ||
( QueryBy.Item1 == CategoryFields.SortOrder && p.SortOrder == (int)(QueryBy.Item2) )
select...
if (query.Count() == 1) // ERRORS HERE CONVERSION OF INT
Аналогичный запрос только с этим, где смена предложения будет работать:
var query = from p in db.Categories
where ( QueryBy.Item1 == CategoryFields.Name && p.Name == (string)(QueryBy.Item2) )
select...
if (query.Count() == 1) // Works HERE
Любая идея, что может быть не так?Может ли быть так, что предложение LINQ where выполняет оценку короткого замыкания и, следовательно, приведение к элементу item2 завершается неудачно?Есть ли лучший способ выполнить мою общую задачу по корректировке предложения where?
Заранее спасибо за помощь!