簡體   English   中英

以泛型類型輸入作為參數的 Lambda 表達式

[英]Lambda Expression with Generic Type Input as Parameter

我想讓一個方法接受這樣的表達式

public class MyClass
{
  public void MyMethod( Expression<Func<T> expression)
  {}
}

public class FooClass
{
  public string Foo { get; set; }
}

MyClass A = new MyClass();

A.MyMethod( (FooClass x) => x.Foo );

我該如何實施? 先感謝您。

首先,您實現這樣一個 class 的目標是什么? 你想返回什么結果? 這是一個如何為您使用它的示例

public class MyClass
{
  IQueryable<FooClass> myQuery;
  public MyClass()
  {
     myQuery = new List<FooClass>() { new FooClass() { Foo = "foo1"}, new FooClass() { Foo = "foo1" }, new FooClass() { Foo = "foo2" } }.AsQueryable();
  }
  public IQueryable<FooClass> WhereMethod(Expression<Func<FooClass, bool>> predicate)
  {
    try
    {
      return myQuery.Where(predicate);
    }
    catch
    {
      return null;
    }
  }
  public IQueryable<TResult> SelectMethod<TResult>(Expression<Func<FooClass, TResult>> predicate)
  {
     try
     {
       return myQuery.Select(predicate);
     }
     catch
     {
        return null;
     }
  }
}
public class FooClass
{
   public string Foo { get; set; }
}

現在使用

MyClass myClass = new MyClass();
var fooList = myClass.WhereMethod(a => a.Foo == "foo1").ToList();

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM