一般 Linq 寫法, 欄位只能寫死, 如:
qry = qry.OrderBy(p => p.CustomerID).ToList();
但是當GridView要做排序時, 要寫很多判斷句, 總覺得太死板了
if ( sortData == "CustomerID") {
qry = qry.OrderBy(p => p.CustomerID).ToList();
} elseif (sortData == "BookName") {
qry = qry.OrderBy(p => p.BookName).ToList();
}
上網查了一下, 改成下面寫法即可囉~
qry = qry.OrderBy(p => GetPropertyValue(p,sortData)).ToList();
private object GetPropertyValue(object obj, string property)
{
System.Reflection.PropertyInfo propertyInfo = obj.GetType().GetProperty(property);
return propertyInfo.GetValue(obj, null);
}
qry = qry.OrderBy(p => p.CustomerID).ToList();
但是當GridView要做排序時, 要寫很多判斷句, 總覺得太死板了
if ( sortData == "CustomerID") {
qry = qry.OrderBy(p => p.CustomerID).ToList();
} elseif (sortData == "BookName") {
qry = qry.OrderBy(p => p.BookName).ToList();
}
上網查了一下, 改成下面寫法即可囉~
qry = qry.OrderBy(p => GetPropertyValue(p,sortData)).ToList();
private object GetPropertyValue(object obj, string property)
{
System.Reflection.PropertyInfo propertyInfo = obj.GetType().GetProperty(property);
return propertyInfo.GetValue(obj, null);
}
留言
張貼留言