2010-05-14 38 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);