请参阅下面的代码行:
Dim bookDetails = context.BookEntities.Where(Function(b) b.ISBN = ISBN)
bookDetails填充了IEnumerable(Of Book)。如何用一本书填充bookDetails,即ISBN是唯一的,所以总是返回一行。
答案 0 :(得分:3)
Where
方法过滤集合并生成过滤集合。其他方法过滤集合并生成单个匹配结果,例如:
对于OrDefault
方法,它们将返回匹配的元素或该类型的默认实例(null
用于引用类型)。如果找不到匹配项,其他方法将抛出异常。
例如,如果您希望仅实例与您的谓词匹配,并且如果没有匹配(或者如果有多个匹配项)则出错,请使用:
Dim bookDetails = context.BookEntities.Single(Function(b) b.ISBN = ISBN)
如果您想要null
值而不是错误:
Dim bookDetails = context.BookEntities.SingleOrDefault(Function(b) b.ISBN = ISBN)
如果可以有多个,并且您想要第一个实例:
Dim bookDetails = context.BookEntities.First(Function(b) b.ISBN = ISBN)
等等......
答案 1 :(得分:1)
使用以下内容:
Dim bookDetails = context.BookEntities.Where(Function(b) b.ISBN = ISBN).SingleOrDefault ()
如果没有匹配,它将返回单个对象或NULL / default。不止一个会导致错误。如果您使用.Single(),那么如果有多个结果或没有结果,它将抛出错误。
答案 2 :(得分:1)
明确,只需要.Single
(如果ISBN可能不存在,则为.SingleOrDefault
)。
Dim bookDetails = context.BookEntities.Single(Function(b) b.ISBN = ISBN)