Suppose I have a list of strings, like this:
var candidates = new List<String> { "Peter", "Chris", "Maggie", "Virginia" };
Now I'd like to verify that another List<String>, let's call it list1, contains each of those candidates exactly once. 
How can I do that, succintly?  I think I can use Intersect().  I also want to get the missing candidates.  
private bool ContainsAllCandidatesOnce(List<String> list1)
{
     ????
}
private IEnumerable<String> MissingCandidates(List<String> list1)
{
     ????
}
Order doesn't matter.
 
     
     
     
     
     
     
     
    