2012-04-16 4 views
0

CustomerテーブルからcustomerIdを取得しようとしています。私はそれを作るしようとすると、MVC3 LINQを通じてint値を選択

はしかし、それはエラーがint型 『から『System.Linq.Iqueryable』「」暗黙的にタイプを変換できません』と言ってい

どのように私は得意先取得できますか?

ありがとうございます。

ここに私のコーディングがあります。

int customerId = from a in db.Customer 
          where a.userName == customerName 
          select a.customerId; 
          //it has error in here. 

order.customerId = customerId; 

答えて

3

クエリが複数の行を返す可能性があります。 するvar顧客= db.Customer.FirstOrDefault(C => c.userName == CUSTOMERNAME):

int customerId = (from a in db.Customer 
        where a.userName == customerName 
        select a.customerId).First(); 
+0

'customerID'が一意である場合、' First() 'ではなく' Single() 'でなければなりません。 – MarcinJuraszek

+0

ありがとう!メイト – wholee1

0

このようにそれを使用します。あなたが最初の(またはシングル)結果が欲しいというLINQを伝える必要があります var id = customer.Id

SelectはIEnumerableを返します。したがって、intに変換することはできません。

0

私はこの質問のために推薦することができる1つ以上の提案は、最初またはデフォルトを使用することです。

var customerId = (from a in db.Customer 
          where a.userName == customerName 
          select a.customerId).FirstOrDefault(); 

order.customerId = customerId;それはすでにそれは私が唯一の1行があるはずです知っているとき.Single()関数を使って好き

1

をint型を知っているので、これは今、正常に動作する必要があります。

int customerId = (from a in db.Customer 
        where a.userName == customerName 
        select a.customerId).Single(); 

以上または未満1行が状況に応じて、時には有用である、発見された場合、これは例外をスローします。

関連する問題