我在我的应用程序中进行排序,如下所示。动态按lambda表达式排序
public IQueryable<Users> SelectAll(string sSortExpression, string sSortOrder)
{
if (sSortOrder == "asc")
{
switch (sSortExpression)
{
case "FirstName":
return UsersRepository.Entities.OrderBy(x => x.FirstName);
case "LastName":
return UsersRepository.Entities.OrderBy(x => x.LastName);
default:
return UsersRepository.Entities.OrderBy(x => x.Id);
}
}
else
{
switch (sSortExpression)
{
case "FirstName":
return UsersRepository.Entities.OrderByDescending(x => x.FirstName);
case "LastName":
return UsersRepository.Entities.OrderByDescending(x => x.LastName);
default:
return UsersRepository.Entities.OrderByDescending(x => x.UserName);
}
}
}
现在它的罚款,但我必须到所有领域中Users
表(大约30场)排序。 然后,该方法将是非常大的
我尝试使用反射像这样
public IQueryable<Users> SelectAll(string sSortExpression, string sSortOrder)
{
var _property = UsersRepository.GetType().GetProperties().Where(a => a.Name == sSortExpression);
if (sSortOrder == "asc")
{
return UsersRepository.Entities.OrderBy(x => _property);
}
else
{
return UsersRepository.Entities.OrderByDescending(x => _property);
}
}
但zhcon失败。
有没有更好的方法来做到这一点? 在此先感谢
TProp:找不到类型命名空间 – Fool
您是否更改了方法声明以包含''通用参数? –
MarcinJuraszek
它现在工作正常。谢谢 – Fool