以下がVendの値を文字列として返さない理由がわかりません。 vendの値を確認すると、次のように表示されます。System.Data.Objects.ObjectQuery``1[System.String]
string vend = (from vnd in db.Vendors
where vnd.VendorID == id
select vnd.VendorName).ToString();
私が販売の価値を見るとき、それは私が期待したものではありません
クエリからIQueryable<String>
が返されます。ファーストかシングルか何かが必要です:
string vend = (from vnd in db.Vendors
where vnd.VendorID == id
select vnd.VendorName).First().ToString();
ToString
が文字列の場合、VendorName
は必要ありません。
string vend = db.Vendors.Single(vnd => vnd.VendorID == id); // more terse
First は、セットから最初のレコードを取得し、セットが空の場合は例外をスローします。
FirstOrDefault は、例外なく、予期されるタイプの最初のレコードまたはデフォルトを返します。
Single はセットの最初のレコードを返しますが、セットに複数のレコードがある場合は例外をスローしますまたは、セットが空の場合。
SingleOrDefault は、セットの最初のレコード、または空の場合はタイプのデフォルトを返しますが、空の場合は例外をスローしますセット内の複数のレコードです。
クエリの結果ではなく、クエリ自体でToString()を呼び出しています。試してみてください
string vend = (from vnd in db.Vendors
where vnd.VendorID == id
select vnd.VendorName).First();
これにより、クエリの最初の結果が取得されます。これはすでに文字列である必要があります(VendorNameが文字列であると想定)。したがって、ToString()を呼び出す必要はありません。