トップ回答者
LINQ to SQLでselectした結果が0,または1個しかないとわかっている場合はどうすれば。

質問
-
var query = from n in db.Table1s where n.Name = str select n; foreach(var m in query) { // 処理
のような処理なのですがテーブルの仕様上、たかだか1個しかselectされないと分かっている場合でもforeachを使うしかないのでしょうか? var m in query;などとは出来ないようです。var m=query[0];もだめなようです。foreachを使えばいいのかもしれませんがなんとなくすっきりしません。他に手段はないのでしょうか。(IEnumerableのHelpの説明ではforeachを使え、列挙子を直接扱うなと書いてありますが)この程度の疑問に答えてある書籍(出来ればC#2010対応の)があれば推薦していただきたいとも思っています。
どうかお願いします。
回答
-
- 回答としてマーク sakana8897 2011年1月24日 12:48
-
あ、query は IQueryable<T> じゃなくて IEnumerable<T> でしたか?
IEnumerable<T> にはそれに対応する Enumerable.First/Enumerable.FirstOrDefault 拡張メソッドが定義されてるので、AsQueryable はどのみち不要のはずです。
- 回答としてマーク sakana8897 2011年1月25日 2:00
-
1個であるなら Single() または 0 または 1 であるなら SingleOrDefault() を使用しておくと、クエリがあやまって複数件を返した時にエラーになった便利です。
逆に複数件ある結果のうち、最初の1件を取得する場合には First(), FirstOrDefault(), Take(1) などが利用できますね。
- 回答としてマーク sakana8897 2011年1月25日 1:35
すべての返信
-
- 回答としてマーク sakana8897 2011年1月24日 12:48
-
あ、query は IQueryable<T> じゃなくて IEnumerable<T> でしたか?
IEnumerable<T> にはそれに対応する Enumerable.First/Enumerable.FirstOrDefault 拡張メソッドが定義されてるので、AsQueryable はどのみち不要のはずです。
- 回答としてマーク sakana8897 2011年1月25日 2:00
-
1個であるなら Single() または 0 または 1 であるなら SingleOrDefault() を使用しておくと、クエリがあやまって複数件を返した時にエラーになった便利です。
逆に複数件ある結果のうち、最初の1件を取得する場合には First(), FirstOrDefault(), Take(1) などが利用できますね。
- 回答としてマーク sakana8897 2011年1月25日 1:35