Запрос, чтобы получить все вместо FirstOrDefault - PullRequest
0 голосов
/ 05 октября 2018

Мне нужно перебрать все элементы в поддереве.Поэтому я хочу поместить все дочерние элементы предшественника в массив.Я пробовал:

var successors = 
    TabWebContext.MenuItemSet.Where(m => m.PredecessorId == parentId).ToArray();

Я тоже пробовал без .ToArray() и с .ToList().

У меня есть следующий цикл: while (successors.Count()>0){...} (точнее .Length>0).

Условие никогда не выполняется. Как вы думаете, что я делаю неправильно?Я знаю, что есть элементы (если я сделаю .FirstOrDefault(), найдется хотя бы один элемент.

Ответы [ 2 ]

0 голосов
/ 05 октября 2018

Просто чтобы показать пример того, как выбрать все из источника данных, работает с предложением where.

int[] numbers = { 2, 34, 23, 11 }; //data source >> can be EF or ADO.NET
var result = numbers.Where(n => n <= 20).ToList(); // select all with filteration
foreach(int  i in result ) //just to loop and
{
  Console.WriteLine(i);
}

вывод:

22
11

, поэтому проблем не возникаетв var successors = TabWebContext.MenuItemSet.Where(m => m.PredecessorId == parentId).ToArray();

, если вы столкнулись с ошибкой, укажите это в своем вопросе.

0 голосов
/ 05 октября 2018

Почему вы чувствуете, что он должен быть в массиве, чтобы перебирать его?Вы можете повторить список следующим образом:

foreach (var successor in TabWebContext.MenuItemSet.Where(m => m.PredecessorId == parentId))
{
   // do stuff with 'successor'
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...