日期:2014-05-20  浏览次数:21026 次

如何在只知道列名的情况下用linq实现分组
linq按照某列排序,有如下思路
思路一:
string columnName = "AppearanceDirector";
var queryGroup = query.GroupBy(q => q.GetType().GetProperty(columnName).GetValue(q, null));
思路二:
var queryGroup = query.GroupBy(q => q.AppearanceDirector);

现在方法一报错(方法“System.Reflection.PropertyInfo GetProperty(System.String)”不支持转换为 SQL。),求问如何在只知道列名的情况下用linq实现分组?

------解决方案--------------------
C# code
var queryGroup = query.ToList().GroupBy(q => q.GetType().GetProperty(columnName).GetValue(q, null));

------解决方案--------------------
private static object GetPropertyValue(object obj, string property)
{
System.Reflection.PropertyInfo propertyInfo=obj.GetType().GetProperty(property);
return propertyInfo.GetValue(obj, null);
}


string columnName = "AppearanceDirector";
var queryGroup = query.GroupBy(q =>GetPropertyValue(q,columnName));

http://blog.csdn.net/q107770540/archive/2011/01/13/6133484.aspx