2010-05-14 37 views
2

我有以下简单的2行代码。它编译好但从不返回datagridview中的结果。如果我将func更改为p=> p.PTNT_FIRST_NAME.StartsWith(this.textBox1.Text),它工作得很好。这里有什么问题?作为参数传递给Func的问题Where条款

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); 

回答

2

变化Func<PATIENT, bool>Expression<Func<PATIENT, bool>>

+0

什么是这样做的根本原因。为什么它首先编译? – user341450 2010-05-14 17:09:21

+1

它编译为一个正常的LINQ调用,而不是LINQ到SQL。 LINQ-to-SQL是一组扩展方法,它们使用'Expresion 's,所以你需要将'Expression '传递给它们。 – SLaks 2010-05-14 17:49:18

2

试试这个:

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