Установка значений в запросе LINQ - PullRequest
1 голос
/ 28 ноября 2011

У меня есть проект, где мне нужно загрузить результаты из одного объекта выберите результаты и затем с этими результатами загрузите еще 2 объекта и выберите из них данные, которые будут возвращены позже.

возможно ли построить LINQ Query из 3 репозиториев ? пожалуйста, дайте мне несколько примеров кода или укажите ссылки ... я не могу найти, как

это просто рисунок чего-то, что я спрашиваю, если это возможно:

  ARepository rep = new AReository();
    BRepository rep = new BReository();
      var Q1= rep.GetAllView1()
                      .Select(o=>new {
                        X=o.data.aaa,
                        Y=o.data.bbb,
    ....
      var Q2= rep.GetAllView2()
                        .Where(x => x.bata.ss == X

      var Q3= rep.GetAllView3()
                        .Where(x => x.cata.ff== Y

1 Ответ

1 голос
/ 28 ноября 2011

Я думаю, вам нужно будет использовать свойства навигации, чтобы это было в любом случае эффективным.То, что вы показываете, возможно, но вы, скорее всего, в конечном итоге получите все сущности обратно, когда они вам не нужны.Из вашего примера видно, что у вас есть три объекта:

View1

  • aaa
  • bbb

View2

  • ss -> отношение внешнего ключа к View1.aaa

View3

  • ff -> отношение внешнего ключа к View1.bbb

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

Так что полномочия View1 могут выглядеть так:

public class View1
{
    public ICollection<View2> View2s { get; set; }

    public ICollection<View3> View3s { get; set; }
}

Если у вас есть такая сущность, следующий код будет работать:

rep
    .GetAllView1()
    .Where(o => o.View2s != null && 
           o.View2s.Count() > 0 && 
           o.View3s != null && 
           o.View3s.Count() > 0)

К этому моменту у вас есть коллекция объектов View1, все с 2 свойствами со связанными сущностями View2 и View3.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...