这样写报错了,无法推断类型。
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>> |