
这样写报错了,无法推断类型。
var data=dtoData .OrderBy(p => { if (requestDto.OrderByTotal) { return p.Total; }else if (requestDto.OrderByAcNum) { return p.AcNum; }else if (requestDto.OrderByAcRate) { return p.AcRate; } else { return p.ID; } }) 1 forgottencoast 2021-02-01 00:20:41 +08:00 if 要写在外面,这样写 LINQ 底层的引擎会尝试把 if 代码编译成 SQL 语句。 示例: if (requestDto.OrderByTotal) { data = dtoData.OrderBy(p => p.Total); } ... |
2 wdv2ly 2021-02-01 07:46:59 +08:00 via Android 我猜你返回这几个参数类型不一样,导致匿名方法没办法确定返回值类型 |
3 netnr 2021-02-01 08:41:02 +08:00 via Android 用扩展,写字符串 |
4 INCerry 2021-02-04 15:59:59 +08:00 你可以这样子 var list = new List<MyClass>(); var enumerable = (IEnumerable<MyClass>) list; if (判断条件 1) { enumerable = enumerable.OrderBy(c => c.Value1); } else if(判断条件 2) { enumerable = enumerable.OrderBy(c => c.Value2); } else if(判断条件 3) { enumerable = enumerable.OrderBy(c => c.Value2); } var result = enumerable.ToList(); 当然你可以写成 switch,实际上还可以用组合表达式来做,用 Expression<Func<T, T1>> |