我在我的應用程序中進行排序,如下所示。動態按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