2

以下の例のように、クエリが1つの文字列アイテムのみを返す必要がある場合、誰かが理由を説明できますか?

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()

製品名の代わりに、これ (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()
4

1 に答える 1

2

Select へのすべての呼び出しは、単一の要素ではなく IEnumerable を返すためです。

クエリが実際に 1 つの要素を返すことを確認するには、Single への呼び出しを追加する必要があります。または、単一の要素または複数の要素が返されたかどうかを気にしない場合は、First を使用して最初の要素を取得できます。

ラムダ構文に相当する VB.NET を使用することに反対しない場合は、すべてを合理化できます。

Dim deletedProdName As String = 
    ctx.products.SingleOrDefault(Function(c) c.Id = prodId).Name
于 2012-10-04T16:08:46.013 に答える