2012-03-03 28 views
1

マイコード:暗黙的に 'INT' に型 'System.Collections.Generic.IEnumerable <dynamic>' を変換できません

int key = 0; 
      //get primary key of inserted row 
      key = db.Query("SELECT max(event_id) FROM event where title=" + cevent.title + "AND description=" + cevent.description + "AND event_start=" + cevent.start + "AND event_end=" + cevent.end); 

エラーメッセージ:

は、暗黙的にタイプ 「のにSystem.Collectionsを変換できません。 Generic.IEnumerable 'to' int '

私はC#、WebMatrix、SQL Serverを使用しています。 WebMatrix。私がしようとすると、クエリの代わりには、ExecuteScalarを実行する場合、私は

を得る「WebMatrix.Data.Database」 の定義が含まれていない「は、ExecuteScalar」

私は修正するために何ができるのか、誰を知っています私のコード?

+0

おそらく 'db.Query'はintの代わりにIEnumerableを返します??エラーメッセージはクリアです。 – vulkanino

答えて

1

代わりにDatabase.QueryValueが必要なようです。

// No need to declare it beforehand... 
int key = (int) db.QueryValue(...); 

そして、あなたの前の質問のように、あなたは絶対にないは、SQL内のクエリパラメータ値を埋め込む必要があります。

Database.QueryValueは、以下のように記載され:

は、結果として、単一のスカラー値を返すSQLクエリを実行します。

...正確に私に聞こえる...それはドキュメントをブラウズする価値があるでしょう - 彼らは非常に詳細ではありませんが、少なくともあなたが利用可能なものを示すだろう。

+0

心配する必要はありません。これは動作した後に修正されます!応答のための多くの感謝: –

0

keyは整数で、メッセージの主張に応じて整数をキャストすることはできません。

あなたが唯一つの結果があることを確信している場合は、このような何か書く:あなたに十分であるべき

key = (int)db.Query("SELECT max(event_id) FROM event where title=" + 
          cevent.title + "AND description=" + 
          cevent.description + "AND event_start=" + 
          cevent.start + "AND event_end=" + cevent.end). 
          FirstOrDefault(); 

を。

+0

結果が1つしかない場合は、 'FirstOrDefault()'よりも 'SingleOrDefault()'が適切でしょう。 – BACON

関連する問題