【发布时间】:2017-10-22 06:12:19
【问题描述】:
我有两张桌子,即学生和马克
表:DbSet<StudentInfo>
ID Name
_____________________
1 Ram
2 Kumar
3 John
表:DbSet<ScoreInfo>
Id StudentId Subject Score
_____________________________________
1 1 GK 90
2 1 SCI 97
3 2 GK 81
4 2 SCI 99
LINQ to SQL 返回以下列表
StudentId Name Subject Score
_____________________________________
1 Ram GK 90
1 Ram SCI 97
2 Kumar GK 81
2 Kumar SCI 99
3 John null null
C#代码是
using(var db = new StudentEntity()) {
var query = db.Student.Where(m => true);
Expression<Func<StudentInfo,object>> sortExpression = null;
if(sortColumn == "Name") {
sortExpression = i => i.Name
} else if(sortColumn == "Subject") {
// ? How to achieve this
}
query = isAcending
? query.OrderBy(sortExpression)
: query.OrderByDescending(sortExpression);
query.Select(m => (...)).Dump();
}
变量sortColumn是String,指定需要排序的列,变量isAcending是bool,指定排序方向。
我需要对主题列进行排序。请帮助我如何编写Expression<Func<StudentInfo,object>>,查询应该是IQueryable?
【问题讨论】:
-
排序时不需要直接使用Expressions。只需使用 query.OrderBy(x => x.Subject);
-
小迂腐点:升序有一个
s。
标签: c# linq sorting linq-to-sql iqueryable