2012-01-16 71 views
1

在我的silverlight项目中,我有许多视图都需要相同的方法“Tester()”。很显然,我希望这种方法可以重新使用,但我不能到达那里。索引实体

什么我是这样的:

void Tester(IList<MyEntity> list) 
    { 
     var sortedlist=list.OrderBy(me=>me.Sortkey).ToList(); 
    } 

这工作得很好,但仅限于myEntity所。

我真正想要的是基本的:

void Tester<T>(IList<T> list, string mySortField) 
    { 
     var sortedlist=list.OrderBy("mySortField").ToList(); 
    } 

不能编译。

任何想法如何做到这一点,请? Thx提前,弗兰克

+1

看看http://stackoverflow.com/questions/41244/dynamic-linq-orderby/233505#233505 – 2012-01-16 12:04:06

+0

@Haris应该是一个答案。如果你不这样做,我会:) – DanTheMan 2012-01-16 14:29:28

+0

@ user24601继续我懒得去做;) – 2012-01-16 14:59:48

回答

0

你可以这样做:

void Tester<T>(IList<T> list, Func<T, object> mySort) { 
    var sortedlist=list.OrderBy(mySort).ToList(); 
} 
... 
Tester<MyEntity>(list, t => t.mySortField); 

虽然它不是传递一个字符串一点更详细的,至少你的编译时间排序字段的检查。