我想知道这两种语法之间的区别:
return db.Contacts.First(x => x.ContactID == id)
到目前为止,我一直在使用,直到我收到错误“序列不包含元素”。然后我必须再次使用下面的那个。
return db.Contacts.Where(x => x.ContactID == id).First();
必须有一个细微差别,我没有做对。
感谢您的帮助。
答案 0 :(得分:2)
First
用于获取序列的第一个元素,但它也使用谓词来过滤IEnumerable序列。
因此,First
将返回IEnumerable
的第一个元素,其中包含一个或多个结果。
First(Predicate)
将在IEnumerable中返回结果的第一个元素,结果为1或更多。
如果使用First
时有0个元素,您将收到错误序列不包含元素。如果您希望结果为0,则应使用FirstOrDefault
。 FirstOrDefault
也可以使用谓词,即
// Will return null if there are no elements with a matching contact Id
return db.Contacts.FirstOrDefault(x => x.ContactID == id);