2010-05-14 5 views
2

J'ai cette simple 2 lignes de code suivant. Il compile bien mais ne renvoie jamais les résultats dans la vue de données. Si je change de fonction à p=> p.PTNT_FIRST_NAME.StartsWith(this.textBox1.Text), cela fonctionne très bien. Quel est le problème ici?Problème passant dans Func comme paramètre à la clause 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); 

Répondre

2

changement Func<PATIENT, bool> à Expression<Func<PATIENT, bool>>.

+0

Quelle est la cause de cela. Pourquoi compile-t-il en premier lieu? – user341450

+1

Il compile à un appel LINQ normal, pas LINQ-to-SQL. LINQ-to-SQL est un ensemble de méthodes d'extension qui prennent les 'Expresion ', vous devez donc leur passer' Expression '. – SLaks

2

Essayez ceci:

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