【问题标题】:using linq select inside method使用 linq select inside 方法
【发布时间】:2016-03-25 01:21:50
【问题描述】:

我有一个包含 ID、姓名、年龄等属性的列表。 使用 Linq,我可以使用 .Select(x => x.Name,x.Age) 选择一个或多个属性 并得到了一个只有这些属性的 Enumratble。

现在,我需要在方法中执行此选择。我尝试使用func但打开方法有问题:

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

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

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

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

【问题讨论】:

    标签: .net linq select lambda func


    【解决方案1】:

    只需将 lambda 作为第二个参数传递:

    myMethod(list, t => t.Age)
    

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

    如果您想选择多个属性而不选择原始类型的新实例,那么您将选择一个新的匿名对象(例如new { })。您可以在 lambda 中选择您关心的属性:

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

    【讨论】:

    • 谢谢,它可以在没有“列表,...”部分的情况下工作。但是,我怎样才能选择许多属性?
    • 您在原始代码中显示的语法对于选择多个属性不正确。我相信你所追求的是一个匿名对象。我已经编辑了答案,以显示您将如何将其投影出来。
    猜你喜欢
    • 2021-01-01
    • 2023-01-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-09-18
    • 2022-08-17
    • 2014-01-24
    相关资源
    最近更新 更多