有人可以解释为什么,当一个查询应该只返回一个字符串项时,就像在下面的例子中一样;
From c in context.Products Where c.Id=prodId Select c.Name
为什么不能这样做;
Dim prodDeleted as String = (From c in context.Products Where c.Id=prodId Select c.Name).ToString()
bvecause它返回此(System.Data.Objects.ObjectQuery`1 [System.String]),而不是产品名称
与必须这样做;
Dim prodDeleted = (From c In ctx.products
Where c.Id = prodId
Select c).FirstOrDefault()
Dim deletedprodname As String = prodDeleted.Name.ToString()
答案 0 :(得分:2)
因为对Select的所有调用都返回IEnumerable而不是单个元素。
要验证您的查询是否确实返回单个元素,您需要将调用添加到Single。或者,如果您不关心是否返回了单个元素或多个元素,则可以使用First获取第一个元素。
如果您不反对使用等效于lambda语法的VB.NET,则可以简化所有内容:
Dim deletedProdName As String =
ctx.products.SingleOrDefault(Function(c) c.Id = prodId).Name