加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

C#List.Find方法 – 如何将值传递给谓词?

发布时间:2020-12-16 04:55:23 所属栏目:百科 来源:网络整理
导读:我无法弄清楚如何根据我在运行时传入的值使用List上的“查找”.如果您看到我的下面的代码,我希望能够在List中找到它的Path参数等于X的CustomClass,其中X将在运行时定义. 任何想法如何在列表上进行这样的查找?或者,如果没有编写迭代器并手动执行查找,这是不
我无法弄清楚如何根据我在运行时传入的值使用List上的“查找”.如果您看到我的下面的代码,我希望能够在List中找到它的Path参数等于X的CustomClass,其中X将在运行时定义.

任何想法如何在列表上进行这样的查找?或者,如果没有编写迭代器并手动执行查找,这是不可能的?在这种情况下,或许有一个关键的集合我应该用来代替?

private List<CustomClass> files;

   public void someMethod()
  {
       Uri u= new Uri(www.test.com);
       CustomClass cc = this.files.find( matchesUri(u) );  // WON'T LET ME DO THIS
  }

   private static bool matchesUri(List<CustomClass> cc,Uri _u)
    {
        return cc.Path == _u;           }


public class CustomClass
{
    private Uri path;

    public Uri Path
    {
        get { return this.path; }
        set { this.path = value; }
    }
}

PS.我必须承认我在http://msdn.microsoft.com/en-us/library/x0b5b5bc.aspx的doco中并没有完全遵循谓词

解决方法

使用lambda:
Uri u = new Uri("www.test.com");
 CustomClass cc = this.files.Find(cc => cc.Path == u);

或者如果您仍想要一个命名方法:

static bool matchesUri(CustomClass cc,Uri _u)
{
    return cc.Path == _u;
}

 Uri u = new Uri("www.test.com");
 CustomClass cc = this.files.Find(cc => matchesUri(cc,u));

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读