.net - 如何传递 System.Linq.LambdaExpression?

标签 .net lambda expression-trees

我有一个这样的方法:

public List<MyObjects> All<TEntity>(params LambdaExpression[] exprs)

我的目的是这样调用它:

All<SomeObject>(a => a.Collection1, a=> a.Collection2, a=>a.Collection3);

但是,我的方法签名似乎没有正确采用表达式。我究竟做错了什么?我该如何编写方法签名才能达到预期的效果?

编辑:我意识到我的示例方法调用并没有准确反射(reflect)我在现实生活中尝试做的事情:)

谢谢!!

最佳答案

在这种情况下,也许最简洁的方法是编写一个扩展方法。

public static class MyExtensions
{
    public static List<TEntity> All<TEntity, TResult>(
        this TEntity entity,
        params Func<TEntity, TResult>[] exprs)
    {
        if (entity == null)
        {
            throw new ArgumentNullException("entity");
        }
        if (exprs == null)
        {
            throw new ArgumentNullException("exprs");
        }

        // TODO: Implementation required
        throw new NotImplementedException();
    }
}

请注意,由于类型推断,您在调用该方法时不必指定类型参数。

class C
{
    public List<string> Collection1 {get; set;}
    public List<string> Collection2 {get; set;}
    public List<string> Collection3 {get; set;}
    // ...
}
// ...
var c = new C();            
c.All(x => x.Collection1, x => x.Collection2, x => x.Collection3);

关于.net - 如何传递 System.Linq.LambdaExpression?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9369375/

相关文章:

C# 多行 lambda 表达式

c# - 序列化表达式树

c# - 带有表达式树的复杂构建器方法

.net - Web 应用程序的最佳 SQL Server 隔离级别?

.net - 可以脱离网络运行的 .net 嵌入式数据库

python - 保存/加载 sympy lambdifed 表达式

lambda - Common Lisp 中的自执行 lambda 表达式

c# - .NET 4.0 中的表达式树 : Expression. 调用无法在类型 List<T> 中找到方法 "get_Item"

c# - 在控制台应用程序中加载 cmd

c# - 如何在 winform 中显示 html 格式的内容(无图像)?