动态创建lambda表达式可以参考这篇文章:http://www.cnblogs.com/zhw511006/archive/2010/05/18/1737891.html
建议参数直接传lambda表达式,这样就不用动态创建了。
这定法,真行啊,很酷
public void GetResult<T>(T t, string id) { var keyName = GetKeyName(t); var first = _repository.Where(n => GetValue(n).CompareTo(new Guid(id)) < 0).OrderByDescending(GetValue).FirstOrDefault(); } public string GetValue<T>(T t) { return t.GetType().GetProperty(GetKeyName(t)).GetValue(t, null).ToString(); } public string GetKeyName<T>(T t) { return ......; }