【问题标题】:Problem passing in Func as parameter to Where clause将 Func 作为参数传递给 Where 子句的问题
【发布时间】:2010-05-14 16:54:10
【问题描述】:

我有以下两行简单的代码。它编译得很好,但从不在 datagridview 中返回结果。如果我将 func 更改为p=> p.PTNT_FIRST_NAME.StartsWith(this.textBox1.Text),它就可以正常工作。这里有什么问题?

Func<PATIENT, bool> func = (PATIENT p) => p.PTNT_FIRST_NAME.StartsWith(this.textBox1.Text);
this.dataGridView1.DataSource = dataContext.PATIENTs.Where<PATIENT>(func).Select(q => q);

【问题讨论】:

    标签: c# linq-to-sql


    【解决方案1】:

    Func&lt;PATIENT, bool&gt; 更改为Expression&lt;Func&lt;PATIENT, bool&gt;&gt;

    【讨论】:

    • 这是什么根本原因。为什么它首先编译?
    • 它编译为普通的 LINQ 调用,而不是 LINQ-to-SQL。 LINQ-to-SQL 是一组采用Expresion&lt;T&gt; 的扩展方法,因此您需要将Expression&lt;T&gt; 传递给它们。
    【解决方案2】:

    试试这个:

    Expression<Func<PATIENT, bool>> func = (PATIENT p) => p.PTNT_FIRST_NAME.StartsWith(this.textBox1.Text);
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-06-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-10-18
      相关资源
      最近更新 更多