深いレベルのクラス/エンティティで linq by フィールドを使用してコレクションごとに並べ替える

ジジ

次のエンティティ構造があります。Invoice.InvoiceLines を設定するいくつかのデコレータがあり、最後に OrderReference でこれらのインボイスラインを注文したい

 public class Invoice 
    {
        private readonly IList<InvoiceLine> _invoiceLines;
        public virtual IList<InvoiceLine> InvoiceLines => _invoiceLines;

        public Invoice()
        {
            _invoiceLines = new List<InvoiceLine>();
        }

    }

    public class InvoiceLine 
    {

        private readonly IList<TransactionLine> _transactionLines = new List<TransactionLine>();
        public virtual IReadOnlyCollection<TransactionLine> TransactionLines => new ReadOnlyCollection<TransactionLine>(_transactionLines);

        public virtual void AddTransactionLine(TransactionLine transactionLine)
        {
            transactionLine.ThrowIfNull(nameof(transactionLine), "can't be null");
            _transactionLines.Add(transactionLine);
        }
    }


    public class PermanentPlacementTransactionLine : TransactionLine
    {

        public PermanentPlacement PermanentPlacement { get; set; }
    }


      public  class PermanentPlacement 
    {
        public virtual string JobReference { get; set; }
        public virtual string OrderReference { get; set; }
    }

私がしたいのは、OrderReference で請求書の行を注文することです。

  foreach (var invoice in DecoratedResult.Invoices.Where(inv => inv.InvoiceType == InvoiceType.Weekly))
            {
                var customer = CustomerRepository.FetchByAccountNumber(invoice.CustomerAccountNumber);
                if (customer.InvoiceProperties.InvoiceSequence == InvoiceSequence.OrderReference)
                {
                   // order by fields at deep level.
                   // invoice.InvoiceLines.OrderBy(i => i.TransactionLines.OfType<PermanentPlacementTransactionLine>());
                }
            }

プロパティをinvoicelineに公開して、それに応じて設定できますが、linqを使用してそれを行う方法はありますか。

ジジ

次の方法でなんとかできました

     invoiceLines.OrderBy(Func1)
     //.ThenBy(Func2).
     //ThenBy(Func3).
     ToList();

private static string Func1(InvoiceLine invoiceLine) =>
            invoiceLine.TransactionLines.OfType<PermanentPlacementTransactionLine >().First()
                .OrderReference ;

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

linqを使用してコレクションごとにグループ化および並べ替える方法は?

分類Dev

並べ替えとグループ化を使用したLINQ(エンティティへの)クエリ

分類Dev

linq toエンティティを使用してすべての月ごとのレコードを合計するにはどうすればよいですか?

分類Dev

エンティティフレームワーク-Linqでエンティティに結合するデータベーステーブル

分類Dev

linq c#でエンティティフレームワークを使用して2つのテーブル結合レコードを取得する方法は?

分類Dev

コレクションプロパティによる動的LINQの並べ替え

分類Dev

LINQを使用して、コレクションからすべてのフィールドを選択し、関連するアイテムを別のコレクションに含める

分類Dev

エンティティへのLinq、VARBINARYフィールドの.Take()は、ArgumentExceptionになります 'DbLimitExpressionにはコレクション引数が必要です

分類Dev

エンティティへのlinqでリフレクションを使用することは可能ですか?

分類Dev

LINQを使用して、外部クラスコレクションの内部クラスプロパティをループする

分類Dev

linqを使用してコレクションを取得し、ネストされたコレクションから一部のエンティティを除外するにはどうすればよいですか?

分類Dev

LINQ結合クエリとリレーショナルエンティティ

分類Dev

LINQ C#を使用して、KEYとしてのプロパティに基づいてモデルクラスコレクションをディクショナリに変換します

分類Dev

エンティティフレームワーク、Linq、「SQLステートメントの一部が深くネストされています。クエリを書き直すか、より小さなクエリに分割してください。」

分類Dev

linq-to-sqlまたはエンティティフレームワークを使用して、2つの異なる親エンティティにエンティティを追加するにはどうすればよいですか?

分類Dev

LINQとLINQtoエンティティ、グループ化時に並べ替えを続ける

分類Dev

コンボボックスの選択に基づいてLinqを使用してコレクションをフィルタリングする

分類Dev

linqネストされたエンティティとコレクション

分類Dev

コレクションエンティティでの複数のグループ化と並べ替え

分類Dev

linqとリフレクションを使用したasp.netのWebコントロールへのプロパティバインディング

分類Dev

コレクションの1つのフィールドがlinqを使用して別のリストに存在することを検出するにはどうすればよいですか?

分類Dev

エンティティフレームワークでのLINQプロジェクションの再利用可能な計算(コードファースト)

分類Dev

エンティティFrameWork、LINQ StartsWith()がコレクションで機能していませんか?

分類Dev

特定のキーで並べ替えてから、並べ替えられたコレクションの最初の結果をLINQのグループに取得する方法

分類Dev

LINQ:グループ化した後、エンティティのコレクションから最小値と最大値を選択します

分類Dev

分割コレクションのlinqエンティティフレームワーク

分類Dev

Linqを使用してエンティティのコレクションプロパティのアイテムを取得するにはどうすればよいですか?

分類Dev

Linqを使用してエンティティのコレクションプロパティのアイテムを取得するにはどうすればよいですか?

分類Dev

ラムダ式とlinqを使用して、EFを使用して別のエンティティモデルタイプのリストを含むエンティティモデルをデータベースに追加する方法

Related 関連記事

  1. 1

    linqを使用してコレクションごとにグループ化および並べ替える方法は?

  2. 2

    並べ替えとグループ化を使用したLINQ(エンティティへの)クエリ

  3. 3

    linq toエンティティを使用してすべての月ごとのレコードを合計するにはどうすればよいですか?

  4. 4

    エンティティフレームワーク-Linqでエンティティに結合するデータベーステーブル

  5. 5

    linq c#でエンティティフレームワークを使用して2つのテーブル結合レコードを取得する方法は?

  6. 6

    コレクションプロパティによる動的LINQの並べ替え

  7. 7

    LINQを使用して、コレクションからすべてのフィールドを選択し、関連するアイテムを別のコレクションに含める

  8. 8

    エンティティへのLinq、VARBINARYフィールドの.Take()は、ArgumentExceptionになります 'DbLimitExpressionにはコレクション引数が必要です

  9. 9

    エンティティへのlinqでリフレクションを使用することは可能ですか?

  10. 10

    LINQを使用して、外部クラスコレクションの内部クラスプロパティをループする

  11. 11

    linqを使用してコレクションを取得し、ネストされたコレクションから一部のエンティティを除外するにはどうすればよいですか?

  12. 12

    LINQ結合クエリとリレーショナルエンティティ

  13. 13

    LINQ C#を使用して、KEYとしてのプロパティに基づいてモデルクラスコレクションをディクショナリに変換します

  14. 14

    エンティティフレームワーク、Linq、「SQLステートメントの一部が深くネストされています。クエリを書き直すか、より小さなクエリに分割してください。」

  15. 15

    linq-to-sqlまたはエンティティフレームワークを使用して、2つの異なる親エンティティにエンティティを追加するにはどうすればよいですか?

  16. 16

    LINQとLINQtoエンティティ、グループ化時に並べ替えを続ける

  17. 17

    コンボボックスの選択に基づいてLinqを使用してコレクションをフィルタリングする

  18. 18

    linqネストされたエンティティとコレクション

  19. 19

    コレクションエンティティでの複数のグループ化と並べ替え

  20. 20

    linqとリフレクションを使用したasp.netのWebコントロールへのプロパティバインディング

  21. 21

    コレクションの1つのフィールドがlinqを使用して別のリストに存在することを検出するにはどうすればよいですか?

  22. 22

    エンティティフレームワークでのLINQプロジェクションの再利用可能な計算(コードファースト)

  23. 23

    エンティティFrameWork、LINQ StartsWith()がコレクションで機能していませんか?

  24. 24

    特定のキーで並べ替えてから、並べ替えられたコレクションの最初の結果をLINQのグループに取得する方法

  25. 25

    LINQ:グループ化した後、エンティティのコレクションから最小値と最大値を選択します

  26. 26

    分割コレクションのlinqエンティティフレームワーク

  27. 27

    Linqを使用してエンティティのコレクションプロパティのアイテムを取得するにはどうすればよいですか?

  28. 28

    Linqを使用してエンティティのコレクションプロパティのアイテムを取得するにはどうすればよいですか?

  29. 29

    ラムダ式とlinqを使用して、EFを使用して別のエンティティモデルタイプのリストを含むエンティティモデルをデータベースに追加する方法

ホットタグ

アーカイブ