2011-12-22 5 views
0

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

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; 
} 

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

ответ

1

Я считаю, что вы хотите 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; 
+0

Спасибо! Я попробую это сейчас :) – test

+0

Кажется, что это работает :) Все, что мне нужно сделать, это извлечь конкретную информацию для транзакций прямо сейчас! Спасибо, куча – test

+0

Как можно получить только определенные данные для трансакций? например, идентификатор tID (идентификатор транзакции)? – test

1

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

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

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

+0

Кажется, что из первого ответа коллекция транзакций автоматически создаются для каждого счета! – test

Смежные вопросы