首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > .NET >

LINQ 怎么排序

2012-03-01 
LINQ 如何排序p_Content.OrderBy(pp.cs_sc_createuser).ToArray()這個是正常的。如果我從外部得到要排序

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(); 

热点排行