Q:

Pattern Match on all words not just whole

I am trying to do wild card matching on a linq statement but its not working as suspected.
_supplierItems.Where(w =>  
w.description.ToLower().Contains(txtProductCode.Text))
                       .Select(s=>s.code).FirstOrDefault();
cboSupplier.DataSource = _supplierItems;
cboSupplier.DisplayMember = "description";
cboSupplier.ValueMember = "code";
cboSupplier.Enabled = true;

For Example if the name Christian Seltmann and the person types lower case S or whatever it should find that and populate the combo items, my question is is Contains the correct way of doing this.
I also tried the following 
_supplierItems.Where(w => 
 w.description.ToLower().Contains(txtProductCode.Text)).Select(s => 
s.code).ToList()

But it cannot convert string to list can someone point me out as to what is happening.

A:

use
_supplierItems.Where(w => w.description.ToLower().Contains(txtProductCode.Text.ToLower()))
   .Select(s => s.code)
   .ToList()

or you can create own extension method like
public static bool ContainsIgnoreCase(this string source, string cont)
{
    return source.IndexOf(cont, StringComparison.InvariantCultureIgnoreCase) >= 0;
}

and use it
_supplierItems.Where(w => w.description.ContainsIgnoreCase(txtProductCode.Text))
   .Select(s => s.code)
   .ToList()

