User3866881 posted
Hello:)
FirstOrDefault should be used to a collection that implemented IQueryable<T> interface. So a common array, if you want to use it, you should convert it to Query and use it, look at this sample——http://msdn.microsoft.com/zh-cn/library/bb301896(VS.95).aspx
int[] numbers = { };
// Get the first item in the array, or else the
// default value for type int (0).
int first = numbers.AsQueryable().FirstOrDefault();
Compared with this, SingleOrDefault can be used on any collection that has implemented the interface of IEnumerable<T>.