Build List from unshared items from two other Lists Ultimately, my goal is to take two lists and then generate a third consisting of items that the first two lists do NOT share. I am able to get the results I want using two foreach loops, but I am hoping to learn about some magical List tool that will do it more cleanly.

public List&lt;string&gt; removeMatchingItems(List&lt;string&gt; List1, List&lt;string&gt; List2)
{
    List&lt;string&gt; desiredList = new List&lt;string&gt;();

    foreach (string value in List1)
    {
        if (!List2.Contains(value))
        { desiredList.Add(value); }
    }
    foreach (string value in List2)
    {
        if (!List1.Contains(value))
        { desiredList.Add(value); }
    }
    return desiredList;
}
The operation is called the symmetric difference of List1 and List2.  You can write

return list1.Except(list2).Union(list2.Except(list1)).ToList&lt;string&gt;();