式の作成配列の順序に基づいて並べ替える

ジョニー5

配列に渡された値の順序に基づいて並べ替える式を作成しようとしています。私はほとんどの概念を理解していませんが、どのように式を選択して3値を連鎖させることができるかについて混乱しています。

/// <summary>
/// This method will build an expression to map the order 
/// of the ownerkeys to it's index to use for sorting
/// I.E I have an array [DivisionOwnerGuid, CompanyOwnerGuid]
/// ownerKey == {DivisionOwnerGuid} ? 0
/// ownerKey == {CompanyOwnerGuid} ? 1 : Int32.MaxValue
/// </summary>
protected Expression<Func<IConfigurationValue, int>> GetOrderByExpression(
    guid[] ownerKeyByPriority)
{

    // x =>
    var parameter = Expression.Parameter(typeof(IConfigurationValue));
    ownerKeyByPriority.Select((ownerKey, index) => new {
        // Hack: Build the expressions using the same parameter
        // to avoid having to use Expression Visitor
        Condition = this.GetCondition(parameter, ownerKey),
        Priority = index
    }).Aggregate((accumulated, nextPriorityExpression) => {
        // How can I aggregate the conditions together
        Expression.Condition(nextPriorityExpression, nextPriorityExpression.Priority,  )
    });
}

protected BinaryExpression GetCondition(ParameterExpression parameter, guid ownerKey)
{
    // x => x.OwnerGlobalIdRowKey
    var property = Expression.Property(parameter, 
        nameof(IConfigurationValue.OwnerGlobalIdRowKey));

    // x => x.OwnerGlobalIdRowKey == { valueOf(ownerKey) }
    return Expression.Equal(property, Expression.Constant(ownerKey, 
        typeof(Guid)));
}

集計関数を介しての三元チェーンを伝播し続けるにはどうすればよいですか?

NetMage

の戻り値の(潜在的な)型エラーを無視するGetConditionと、ネストされた3項演算子の本体Aggregateを適切な型で累積して、ラムダを作成できます。

Expression<Func<IConfigurationValue, int>> GetOrderByExpression(
    Guid[] ownerKeyByPriority) {

    // x =>
    var parameter = Expression.Parameter(typeof(IConfigurationValue));
    var body = ownerKeyByPriority.Select((ownerKey, index) => new {
        // Hack: Build the expressions using the same parameter
        // to avoid having to use Expression Visitor
        Test = this.GetCondition(parameter, ownerKey),
        Priority = Expression.Constant(index)
    }).Aggregate((Expression)Expression.Constant(int.MaxValue), (accumulated, nextPriorityExpression) =>
        Expression.Condition(nextPriorityExpression.Test, nextPriorityExpression.Priority, accumulated)
    );

    return (Expression<Func<IConfigurationValue, int>>)Expression.Lambda(body, parameter);
}

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

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

編集
0

コメントを追加

0

関連記事

分類Dev

別の配列に基づいて複数の配列を並べ替える並べ替え順序

分類Dev

別の配列の並べ替え順序に基づいて配列を並べ替える

分類Dev

文字列配列の順序に基づいてArrayListを並べ替える-Java

分類Dev

カスタムの並べ替え順序配列に基づいて JSON を並べ替える

分類Dev

別の配列の順序に基づいて配列の配列を並べ替える(Ruby)

分類Dev

別の配列の順序に基づいて配列の配列を並べ替える

分類Dev

別の文字列の順序に基づいて文字列を並べ替える

分類Dev

別の配列の並べ替え順序に基づいて複数の配列を並べ替えるにはどうすればよいですか?

分類Dev

Vue:オブジェクトの順序に基づいて配列を並べ替える

分類Dev

JavaScript:順列の順序に基づいて配列を並べ替えますか?

分類Dev

R内の別の列の順序に基づいて列を並べ替える

分類Dev

PHPの値に基づいて配列を並べ替える

分類Dev

配列に基づいて行列の行を並べ替える

分類Dev

javascriptの並べ替えを使用して別の配列に基づいて配列の順序を変更する

分類Dev

オブジェクトの別の配列の順序に基づいてオブジェクトの配列を並べ替える

分類Dev

別のリストの部分文字列の順序に基づいてリストを並べ替える

分類Dev

個別の配列の順序に基づいて配列のコレクションを並べ替える最も効率的な方法

分類Dev

繰り返し項目がある別の配列の順序に基づいて配列を並べ替える

分類Dev

別の配列の順序に基づいた配列の効率的な並べ替え

分類Dev

文字列配列jsに格納されているキーに基づくカスタムの並べ替え/順序付けオブジェクト配列

分類Dev

Javascriptアンダースコアを使用して、別の配列順序に基づいて配列順序を並べ替えます

分類Dev

順序付けられた配列に基づいて多次元配列を並べ替える

分類Dev

プロットを作成する前に、別の配列に基づいて配列を並べ替える

分類Dev

他の並べ替えられた配列に基づいて配列を並べ替える

分類Dev

事前定義された順序に基づいてJavascriptで配列を並べ替える

分類Dev

平均に基づいて配列の配列を並べ替える

分類Dev

ID配列に基づいて複数の配列を並べ替える

分類Dev

子配列の値に基づいて配列を並べ替える方法

分類Dev

配列の長さに基づいて配列を並べ替える

Related 関連記事

  1. 1

    別の配列に基づいて複数の配列を並べ替える並べ替え順序

  2. 2

    別の配列の並べ替え順序に基づいて配列を並べ替える

  3. 3

    文字列配列の順序に基づいてArrayListを並べ替える-Java

  4. 4

    カスタムの並べ替え順序配列に基づいて JSON を並べ替える

  5. 5

    別の配列の順序に基づいて配列の配列を並べ替える(Ruby)

  6. 6

    別の配列の順序に基づいて配列の配列を並べ替える

  7. 7

    別の文字列の順序に基づいて文字列を並べ替える

  8. 8

    別の配列の並べ替え順序に基づいて複数の配列を並べ替えるにはどうすればよいですか?

  9. 9

    Vue:オブジェクトの順序に基づいて配列を並べ替える

  10. 10

    JavaScript:順列の順序に基づいて配列を並べ替えますか?

  11. 11

    R内の別の列の順序に基づいて列を並べ替える

  12. 12

    PHPの値に基づいて配列を並べ替える

  13. 13

    配列に基づいて行列の行を並べ替える

  14. 14

    javascriptの並べ替えを使用して別の配列に基づいて配列の順序を変更する

  15. 15

    オブジェクトの別の配列の順序に基づいてオブジェクトの配列を並べ替える

  16. 16

    別のリストの部分文字列の順序に基づいてリストを並べ替える

  17. 17

    個別の配列の順序に基づいて配列のコレクションを並べ替える最も効率的な方法

  18. 18

    繰り返し項目がある別の配列の順序に基づいて配列を並べ替える

  19. 19

    別の配列の順序に基づいた配列の効率的な並べ替え

  20. 20

    文字列配列jsに格納されているキーに基づくカスタムの並べ替え/順序付けオブジェクト配列

  21. 21

    Javascriptアンダースコアを使用して、別の配列順序に基づいて配列順序を並べ替えます

  22. 22

    順序付けられた配列に基づいて多次元配列を並べ替える

  23. 23

    プロットを作成する前に、別の配列に基づいて配列を並べ替える

  24. 24

    他の並べ替えられた配列に基づいて配列を並べ替える

  25. 25

    事前定義された順序に基づいてJavascriptで配列を並べ替える

  26. 26

    平均に基づいて配列の配列を並べ替える

  27. 27

    ID配列に基づいて複数の配列を並べ替える

  28. 28

    子配列の値に基づいて配列を並べ替える方法

  29. 29

    配列の長さに基づいて配列を並べ替える

ホットタグ

アーカイブ