Вложенный запрос или подзапрос linq - PullRequest
0 голосов
/ 22 декабря 2011

У меня есть два класса. Счета и сделки. Один счет состоит из множества транзакций. Я могу отображать счета, и я могу отображать транзакции самостоятельно. Но я хотел бы отобразить последние 10 счетов (эта часть выполнена), но каждый счет должен показывать все свои транзакции.

This part of the code is used to get all transactions of a bill
{        Bill bill = (Bill)Bills.Instance.GetBillsByCustomerID(id);

                //get all transactions of bill
                var transactions = from t in this._entities.Transactions
                                   where t.Bill.bID == bill.bID
                                   select new
                                   {
                                       t.Product.pName, t.tQty, t.tUnitPrice, t.Bill.bTotal, t.Bill.bTimestamp, t.Bill.bCustomerIDF
                                   };
    }

Теперь мне бы хотелось, чтобы следующий запрос, приведенный ниже, имел бы своего рода вложенный запрос, в котором были бы получены все транзакции КАЖДОГО БИЛЛА: (на данный момент это отображает только 10 счетов - и никаких транзакций

{
            //returns top 10
            var bills = (from b in this._entities.Bills
                         where b.bCustomerIDF == id
                         orderby b.bTimestamp descending
                         select new { b.bTotal, b.bTimestamp, b.Customer.cName}).Take(10);
            return bills;
}

Можете ли вы привести меня к простому решению? Спасибо

Ответы [ 2 ]

1 голос
/ 22 декабря 2011

Я бы подумал, что вы просто сможете добавить что-то вроде следующего в ваш выбор:

transactions.Where(x=>x.Bill.bID == b.bID)`

При этом я также думаю, что это звучит так, как будто ваша объектная модель неверна.Я бы ожидал, что у Bill будет коллекция Transaction, которые есть в этом Билле.

1 голос
/ 22 декабря 2011

Я полагаю, вы хотите join с into

 var bills = (from b in this._entities.Bills              
              join t in this._entities.Transactions on t.Bill.bID equals b.bID into tg
              where b.bCustomerIDF == id
              orderby b.bTimestamp descending
              select new 
              { 
                b.bTotal, 
                b.bTimestamp, 
                b.Customer.cName,
                Transactions = tg
              }
             ).Take(10);
 return bills;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...