튜플을 기반으로 where 절을 "조정"하는 단일 쿼리를 만들고 싶습니다. 튜플의 첫 번째 항목에는 필터링 할 필드를 나타내는 열거 형 값이 들어 있습니다. 두 번째 튜플 항목은 필터 값입니다.LINQ to SQL 쿼리 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 절을 조정하는 전반적인 목표를 달성하는 더 좋은 방법이 있습니까?
미리 도움 주셔서 감사합니다.
감사합니다. Steven! 이것은 하나의 변경으로 작동합니다. 마지막 줄은 "query = query.Where (whereClause);"입니다. 쿼리를 필터링하는 것 같습니다. 그래서 switch 문을 쿼리에 대해 이동하고 쿼리를 다음과 같이 변경했습니다. "IQueryable query = (db.Categories ...). where (whereClause);" –