I've searched around and haven't really found a clear answer as to when you'd want to use
var result = List.Where(x => x == "foo").First();
var result = List.Where(x => x == "foo").FirstOrDefault();
var result = List.Where(x => x == "foo").Take(1);
I would use
First() when I know or expect the sequence to have at least one element. In other words, when it is an exceptional occurrence when the sequence is empty.
FirstOrDefault() when you know that you will need to check whether there was an element or not. In other words, when it is legal for the sequence to be empty. You should not rely on exception handling for the check. (It is bad practice and might hurt performance).
Finally, the difference between
Take() is that
First() returns the element itself, while
Take() returns a sequence of elements that contains exactly one element. (If you pass 1 as the parameter).