Ну, Я не уверен, что я ошибаюсь, или если ошибки обработаны linq, но следующий запрос linq возвращает то, что я НЕ хочу, если я не использую дополнительные скобки.Проблема с парсером Linq?
int? userLevel;
Guid? supervisorId;
List<int> levelsIds = new List<int>();
string hierarchyPath;
// init the vars above
// ...
var qry = from f in items
where userLevel.HasValue
? (f.IsMinLevelIdNull() || (levelsIds.Contains(f.MinLevelId)))
: true
&& supervisorId.HasValue
? (f.IsSupervisorIdNull() || (!f.ChildrenVisibility && (f.SupervisorId == supervisorId.Value))
|| (f.ChildrenVisibility && (hierarchyPath.IndexOf(f.SupervisorId.ToString()) >= 0)))
: true
select f;
Идея заключается в том, чтобы выполнить запрос в и между двумя блоками условиями «активированы» наличием переменного «userLevel» и «SupervisorID».
Например, если оба userLevel и supervisoId равны нулю запрос становится:
var qry = from f in items
where true && true
select f;
Ну, этот запрос работает хорошо, только если я вложить в дополнительные скобки в 2 триграфов:
var qry = from f in items
where (userLevel.HasValue
? (f.IsMinLevelIdNull() || (levelsIds.Contains(f.MinLevelId)))
: true)
&& (supervisorId.HasValue
? (f.IsSupervisorIdNull() || (!f.ChildrenVisibility && (f.SupervisorId == supervisorId.Value))
|| (f.ChildrenVisibility && (hierarchyPath.IndexOf(f.SupervisorId.ToString()) >= 0)))
: true)
select f;
The Вопрос в следующем: зачем нужны дополнительные скобки? Мое мнение таково, что в синтаксисе linq есть проблема.
Ничего общего с LINQ. Untagging. – leppie
Вопросы _is_ о LINQ, просто ответ, который нет. Повторное добавление тегов. –