LINQ 如何排序
p_Content.OrderBy(p=>p.cs_sc_createuser).ToArray();
這個是正常的。
如果我從外部得到要排序的字段名字如
string a="cs_sc_createuser";
p_Content.OrderBy(p=>XXXXX).ToArray();
XXXXX
這裡該怎麼寫啊。
------解决方案--------------------p_Content.OrderBy(p => p.GetType().GetProperty(a).GetValue(p, null)).ToArray();
------解决方案--------------------string a="cs_sc_createuser";
var query=p_Content.OrderBy(p=>GetPropertyValue(p,a)).ToArray();
private static object GetPropertyValue(object obj, string property)
{
System.Reflection.PropertyInfo propertyInfo=obj.GetType().GetProperty(property);
return propertyInfo.GetValue(obj, null);
}
http://blog.csdn.net/q107770540/article/details/6133484
------解决方案--------------------写成扩展方法,将PropertyInfo放在单例字段中就不用每次都反射一下
------解决方案--------------------呵呵“单例字段”,这个代码里其实就是想说让PropertyInfo变量声明static的吧?!很多设计模式的名词是很雷人的,即使用了也要绕一大圈子让别人去争议。这就不如直截了当地使用.net的名词。
一般来说不要过度想到所谓的“万能”。最次地,为了性能考虑,你可以使用所谓的switch,比如说
C# code
switch(s)
{
case "cs_sc_createuser":
query= query.OrderBy(p=>p.cs_sc_createuser);
break;
case .......
}
query= query.ToArray();