LINQ Conditional Group

前端 未结 2 595
离开以前
离开以前 2020-12-03 11:04

Is it possible to write a LINQ statement with a conditional group clause? Here is basically what I\'m trying to do:

bool someFlag = false;

var result = fro         


        
相关标签:
2条回答
  • 2020-12-03 11:30

    Co-worker figured it out for me:

    bool someFlag = false;
    var result = from t in tableName
       group t by new { FieldA = (someFlag ? 0 : t.FieldA), t.FieldB } into g
       select g;
    
    0 讨论(0)
  • 2020-12-03 11:50

    In the case that your someFlag is not a variable dependent on the current element of the iterator, then I think you could make your code more readable by writing the following.

    bool someFlag = false;
    var result = someFlag ?
         (from t in tableName group t by t.FieldA into g select g) :
         (from t in tableName group t by t.FieldB into g select g);
    

    Admittedly it's slightly longer, but its purpose is significantly more obvious in my opinion.

    And to slightly simplify the code you just posted:

    bool someFlag = false;
    var result = from t in tableName
       group t by (someFlag ? t.FieldA : t.FieldB) into g
       select g;
    

    ...or am I missing something here?

    0 讨论(0)
提交回复
热议问题