Q:

C# list contains specific string

I have a list of strings (thing1-3, else1-3, other1-3), and I want to create a simplified list with just (thing, else, other).  Seems straight forward (or at least this was with the Classic VB Dictionary .Exists function), but I'm stuck.  So I'm checking if the string startswith one of my simplified strings, then if the simplified list does not contain that string, add it.  But checking if the simplified list contains the string already is throwing me off. 
List<string> myList = new List<string>(new string[] { "thing1", "thing2", "thing3", "else1", "else2", "else3", "other1", "other2", "other3" });

List<string> myListSimplified = new List<string>();

foreach (string s in myList)
{
   if (s.StartsWith("thing"))
   {
      if (! myListSimplifed. Contains("thing")) { myListSimplifed. Add("thing"); }
   }

   if (s.StartsWith("else"))
   {
      if (! myListSimplifed. Contains("else")) { myListSimplifed. Add("else"); }
   }

   if (s.StartsWith("other"))
   {
      if (! myListSimplifed. Contains("other")) { myListSimplifed. Add("other"); }
   }
}

I would expect this mySimplifiedList to contain "thing", "else", "other", but it contains thing1-3, else1-2, other1-3. 
if (myListSimplified. Exists("thing")) { }

IntelliSense returns "cannot convert from 'string' to 'System. Predicate'
ok.. so this:
if (! myListSimplified. Any(str => str. Contains("thing"))) { myListSimplified. Add("thing"); }

Or
if (! myListSimplified. Exists(str => str. Contains("thing"))) { myListSimplified. Add("thing"); }

None of these work.  
Obviously I can create a method to iterate through the list and compare it to a string, but this functionality seems to be too fundamental to lists that MS left it out... Also seems silly to be passing lists around... 
private bool Exists(List<string> lList, string sCompare)
{
    bool bVal = false;

    foreach (string s in lList)
    {
        if (s == sCompare) { bVal = true; }
        break;
    }

    return bVal;
}

A:

I'm not sure what your problem is:
First of all, it seems your first code snippet contains a typo: you have List<string> myListSimplified but then inside the foreach you reference myListSimplifed (missing 'i' after the 'f'). 
If I correct that typo and run your code, then I get a list containing {"thing", "else", "other" }, which seems to be what you also expect.