使用linq select inside inside

时间:2016-03-25 01:21:50

标签: .net linq select lambda func

我有一个List,其中包含Id,Name,Age等属性。 使用Linq,我可以选择一个或多个属性.Select(x => x.Name,x.Age) 并获得了只有这些属性的Enumeratble。

现在,我需要在方法中选择。我试图使用func但是无法打开方法:

 void myMethod<T,TSelection>(List<T> Persons, Func<T, TSelection> index) {

 var Index = list.Select(index);
...
    }

我现在该如何打开方法?我想是这样的:

 myMethod(list,(list, t => t.Age)) 

1 个答案:

答案 0 :(得分:0)

简单地传递lambda作为第二个参数:

myMethod(list, t => t.Age)

运行时会将lambda强制转换为与Func参数兼容的委托。如果编译器无法确定您的类型,那么您可能必须在lambda上指定类型。如果您使用泛型类型参数作为返回类型,这通常只是一个问题 - 在这种特殊情况下你应该没问题。

如果要在不选择原始类型的新实例的情况下选择多个属性,则应选择新的匿名对象(例如new { })。您可以在lambda中选择您关心的属性:

myMethod(list, t => new { t.Age, t.Name });