1

おそらく簡単な質問ですが、これはまだ初心者で、方法がわかりません....各ワークステーションは多数の請求書を持つことができるので、私の以下のコードは....

すべてのワークステーションを保存し、各ワークステーションを調べて、そのワークステーション
の最後の (最新の) 請求書を取得します
。請求書の日付 (最新の請求書) が 12 か月未満の場合

サイトのリストに追加...

編集:すべての助けてくれてありがとう、しかし私はC#を通してそれをやろうとしていて、あなたたちが言及したLINQ検索を避けようとしています...答えてくれたみんなに感謝します...

私の新しい問題は、ChosenInvoices リストを昇順でソートし、最初のものを返す必要があることです...リスト内の誰かを選択していると思うので:

 var allWorkSites =
            (from worksites in db.Work_Sites
             select worksites).Distinct().ToList();
    List<Object> chosenInvoices = new List<Object>();

    foreach (Work_Site worksite in allWorksites)
    {
        Invoice lastInvoice = worksite.Invoices.LastOrDefault();

        if (lastInvoice != null)
        {
            if (lastInvoice.Invoice_Date < DateTime.Now.AddMonths(-12))
            {
                chosenInvoices.Add(workstation);
            }
        }
    }
4

5 に答える 5

4
List<invoice> actualInvoices = db.Work_Stations.Distinct()
        .Where(w => w.Invoices.Last().Invoice_Date < DateTime.Now.AddMonths(-12)).Select(w => w.Invoices.Last()).ToList();

このコードは、各ワークステーションからの最新の請求書のリストを返します。

請求書を昇順リストでソートするには、メソッドOrderBy()があるため、このメソッドで注文してから、最初のものを取ります。

また、リストにはSort()メソッドがあります。

于 2013-01-24T13:48:39.123 に答える
2
allWorkStations
    .Where(w => w.Invoices.Last().Invoice_Date < DateTime.Now.AddMonths(-12))
    .Select(w => list.add(w));

またはさらに良い:

List<Work_Station> list = db.Work_Stations
    .Distinct()
    .Where(w => w.Invoices.Last().Invoice_Date < DateTime.Now.AddMonths(-12))
    .ToList();
于 2013-01-24T13:30:10.097 に答える
1
var allWorkStations =
            (from workstation in db.Work_Stations
             where workstation.Invoices.Last().Invoice_Date < DateTime.Now.AddMonths(-12)
             select workstation).Distinct();
于 2013-01-24T13:32:16.527 に答える
1

これは、請求書が日付順に並んでいない場合でも機能します。

invoiceLst.AddRange(allWorkStations
    .Where(w => w.Invoices.Max(i => i.Invoice_Date) < DateTime.Now.AddMonths(-12)));
于 2013-01-24T13:38:26.070 に答える