1. First() returns the first element of a sequence even there is a single element in that sequence.
2. Single() returns the single element of a sequence and that element should be the exactly a single one. If there are more then one matching elements the exception is thrown. It means using Single() method is some kind of consistency check. Pay attentions to that fact and find the appropriate use to this method. When you use Single() you should know that matching element is always only one.
**-If you want an exception to be thrown if the sequence contains more than one element, then use SingleOrDefault. If you always want one record no matter what the sequence contains, use FirstOrDefault.