LINQクエリについて質問があります。通常、クエリはIEnumerable<T>
タイプ。戻り値が空の場合、それがnullかどうかはわかりません。私は次の場合わからないToList()
例外または単に空をスローしますList<string>
何も見つからなかった場合IEnumerable
結果?
List<string> list = {"a"};
// is the result null or something else?
IEnumerable<string> ilist = from x in list where x == "ABC" select x;
// Or directly to a list, exception thrown?
List<string> list1 = (from x in list where x == "ABC" select x).ToList();
私はそれが非常に単純な質問であることを知っています、しかし私は当分の間利用可能なVSを持っていません。
空の列挙型を返します。 nullにはなりません。あなたは音を眠ることができます:)
また確認することができます.Any()
方法:
if (!YourResult.Any())
ちょっと注意してください.Any
それでもデータベースからレコードを取得します。する.FirstOrDefault()/.Where()
オーバーヘッドも同じくらいになりますが、クエリから返されたオブジェクトをキャッチできます。
.Any()
一致するレコードがある場合は、実際にクエリを実行して特定の値を検索するとnullになる可能性があるかどうかを通知するだけです。.Any()
そうではありません。 - vapcguy
var lst = new List<int>() { 1, 2, 3 };
var ans = lst.Where( i => i > 3 );
(ans == null).Dump(); // False
(ans.Count() == 0 ).Dump(); // True
(ダンプはLinqPad)
Count()
プロパティではなく、メソッドでもあります。 - heyNow
.ToListは空のリストを返します。 (new List()と同じ);
Linq-to-SQLでクエリの最初の要素を取得しようとしても結果が得られない場合は、次のようになります。sequence contains no elements
エラー。私はあなたに言及されたエラーがに等しくないことを保証することができますobject reference not set to an instance of an object
。
結論として、いいえ、nullとは言えないのでnullは返されません。sequence contains no elements
それはいつも言うだろうobject reference not set to an instance of an object
;)
他の記事では、結果が "空の" IQueryableであることを明らかにしています。これはToList()が空のリストなどに正しく変更されます。
何人かの演算子には注意してください。空の列挙型を送った場合にはスローされます。あなたがそれらを一緒にチェーンするとき、これは起こり得る。
それは例外をスローしません、あなたは空のリストを取得します。