0

まず、ClientID を取得します。次に、その ClientID に関連付けられたすべての請求書を取得します。InvoiceNumber の降順ですべて並べ替えられたデータを返したいと思います。これが私のコードです:

var rvInvoices =
             (from i in db.QB_INVOICES_HEADER
                where i.ClientID == cId
                select i).ToList();
foreach (var itm in rvInvoices)
{
        InvoiceModel cm = new InvoiceModel()
        {
                InvoiceNumber = itm.InvoiceNumber,
                InvoiceSentDt = itm.InvoiceSentDt,
                InvoiceDt = itm.InvoiceDt,
                Amount = itm.Amount,
                Term = itm.Term,
                ClientName = itm.CI_CLIENTLIST.ClientName
        };

        listInvoices.Add(cm);
}

return listInvoices;
4

5 に答える 5

2
listInvoices.OrderByDescending(x => x.InvoiceNumber).ToList()
于 2012-10-16T15:47:07.560 に答える
1

次のようなことを試してみてください。

var rvInvoices =
               (from i in db.QB_INVOICES_HEADER
                where i.ClientID == cId
                select i).OrderByDescending(x => x.InvoiceNumber);

そして、あなたが電話する必要がある理由がわかりません.ToList()

于 2012-10-16T15:48:21.837 に答える
0

現在使用しているメソッドは複数のリストを作成し、明示的なforeachループがあり、出力を並べ替える必要があります。これは、単一のリストを作成するだけで、明示的なループを使用せずに、データベースで並べ替えを実行することで実行できます。

return
    (from i in db.QB_INVOICES_HEADER
     where i.ClientID == cId
     // have the database do the sorting
     orderby i.InvoiceNumber descending
     select i)
     // break out of the DB query to make InvoiceModel
    .ToEnumerable()
    .Select(itm => new InvoiceModel()
    {
        InvoiceNumber = itm.InvoiceNumber,
        InvoiceSentDt = itm.InvoiceSentDt,
        InvoiceDt = itm.InvoiceDt,
        Amount = itm.Amount,
        Term = itm.Term,
        ClientName = itm.CI_CLIENTLIST.ClientName
    })
     // only create one list as the last step
    .ToList();
于 2012-10-16T19:38:32.257 に答える
0

クライアントではなくデータベースで注文する必要があります。

var rvInvoices = db.QB_INVOICES_HEADER
    .Where(i => i.ClientID == cId)
    .OrderByDescending(i => i.InvoiceNumber);
于 2012-10-16T15:49:15.610 に答える
0

3か所で注文できます。

  1. 最初のクエリでは、
  2. foreachまたは
  3. の中にreturn

オプション1:

var rvInvoices =
    (from i in db.QB_INVOICES_HEADER
    where i.ClientID == cId
    select i).OrderByDescending(i => i.InvoiceNumber).ToList();

オプション 2:

foreach (var itm in rvInvoices.OrderByDescending(i => i.InvoiceNumber))

オプション 3:

return listInvoices.OrderByDescending(i => i.InvoiceNumber).ToList();

データベース レベルで注文が実行されるため、ルート 1 を使用することをお勧めします。

于 2012-10-16T15:49:46.883 に答える