Come in Lambda Expression e LINQ

Domanda semplice come avere qualcosa di simile

customers.where(c=>c.Name **like** "john"); 

so che questo non è ansible ma mi stavo chiedendo come posso avere qualcosa di simile.

Grazie in anticipo.

 customers.Where(c => c.Name.Contains("john")); 

Se si sta utilizzando LINQ su SQL, utilizzare SqlMethods.Like :

 customers.Where(c => SqlMethods.Like(c.Name, "%john%")); 

Spiegazione:

Il compilatore genererà un albero di espressioni dall’istruzione sopra. Poiché LIKE è un costrutto SQL specifico e non comune a tutti i provider di query LINQ, la class SqlMethods ei relativi membri vengono utilizzati come “suggerimento” per il compilatore di espressioni (compila gli alberi di espressione in SQL) per emettere un’istruzione LIKE .

Il primo pensiero che viene in mente è Regex.IsMatch .

Questo sarebbe più vicino a fornire il tipo di funzionalità che si ottiene da LIKE ; per esempio con esso potresti fare questo:

 var matches = people.Where(p => Regex.IsMatch(p.Name, "A.*[mn]")); foreach (Person match in matches) { Console.WriteLine(match.Name); } 

E ottieni un risultato come questo:

 Adamo
 Aaron
 Aidan

Andare con string.Contains come altri hanno suggerito è quasi certamente preferibile se la tua intenzione è semplicemente quella di cercare una sottostringa specifica all’interno di Name .

 using System.Data.Linq.SqlClient; ... customers.where(c=>SqlMethods.Like(c.Name, "john")); 

Usa Regex.IsMatch nella tua dichiarazione where o per una versione più semplice senza caratteri jolly, ecc .:

 customers.where(c=>c.Name.Contains("john")); 

Ecco il mio codice:

 string s="somethings"; customers.Where(c => c.Name != null && c.Name.ToLower().Contains(s.ToLower())); 

Qualcosa del genere.