2014-10-08 4 views
0

У меня есть объект под названием Parent, в котором есть список детей. Теперь я хочу выбрать родительский и все его заказы по заказу.LINQ query select entity и его запрос на сбор

entities:- class parent{ 
          Int id; 
          List<Child> children; 
          } 

       class Child{ 
          String name; 
          DateTime DOB; 
          Int DisplayOrder; 
          } 

раньше я получал от родителей базы данных с помощью Linq к Entity, как

   context.Parents.Find(id); 

Это делает все отлично. но теперь мое требование изменилось, теперь мне нужно выбрать его порядок детей по их порядку отображения. Как мне это сделать. Любая помощь приветствуется.

обновление родительского класса: -

   class parent{ 
         public Int id; 
         public virtual List<Child> children; 
          } 

ответ

1

Из информации вы при условии, я полагаю, что вы используете свой children где-то, чтобы отобразить их, чтобы вы могли использовать только parent.children.OrderBy(x => x.DisplayOrder).ToList() вместо простого parent.children, который, я полагаю, у вас был раньше.

Update 1.

Кроме того, я, насколько я помню Find не будет включать в себя своих детей. Стоит попробовать что-то вроде:

var parent = context.Parents.Include(x => x.children).FirstOrDefault(x => x.id = id); 
parent.children = parent.children.OrderBy(x => x.DisplayOrder).ToList(); 
+0

нет. Я получил доступ к model.children в моем файле .cshtml, который я использовал для цикла вместо foreach. я не могу изменить это, поэтому я спросил, могу ли я получить родителя с детьми в отсортированном порядке от самого db – iGod

+0

@iGod Я уверен, что вы сможете изменить это, просто покажите вам использование? Вы сможете создать другую локальную переменную, в которой будут храниться переупорядоченные ** дети **, и вы сможете сделать свой цикл против этого. – Vladimirs

+0

Привет, Влад, против вашего обновленного комментария (извините, что я использовал это). find также включал детей, и только сейчас я придумал это решение «parent.children = parent.children.OrderBy (x => x.DisplayOrder) .ToList()». но это прекрасно? – iGod

0

У вас есть заказ по команде на списке, вы можете отправить в контроллер на «столбец» и порядок этой колонке

+0

Я так и не понял. Мне нужно получить родителя на основе переданного id и все его дочерние элементы также упорядочить по порядку отображения – iGod

+0

, но вы можете использовать context.Parents.Find (id) .OrderBy (order => order.DisplayOrder); – ETorre

+0

он не будет работать, поскольку вы не можете использовать orderby extension после Find(). и, кроме того, свойство order order для детей не является родителем. – iGod

0

Это на тот случай, если вы уверены, что может быть только один родитель с данным ID.

var parent = context.Parents.Find(id); 
parent.children = parent.children.OrderBy(cl => cl.DisplayOrder).ToList(); 
+0

Я думал об этом же. но я сомневаюсь, что это правильный подход – iGod

+0

@iGod Конечно, он работает. Но, возможно, это не лучшее решение. Однако при заказе parent.children работать не будет. – 26071986