SingleOrDefault
クエリを使用しているときに、すべての列のサブセットを選択するにはどうすればよいですか?たとえば、LINQの式の後にEFでSingleOrDefault LINQクエリから列のサブセットを選択する方法
var personid = ctx.persons.SingleOrDefault(p => p.login == currentLogin)?.personid;
SELECT TOP 1 * FROM ...
クエリの種類にコンパイルします。 Select()
に興味のある列のみをご希望です。納税者番号SELECT TOP 1 personid, myColumn FROM ...
アンダーフード。
質問は恐らくlinked questionと重複することはできませんのでご注意ください。私はSingle
/SingleOrDefault
のコンテキストに興味があり、LINQの汎用ソリューションではありません。明確IEnumerable<T>
を実装していないと時Select()
EDできないタイプT
のSingle<T>
戻る単一のオブジェクト(またはスロー):.Select()
と.SingleOrDefault()
を連鎖することは明らかな理由のためにことは不可能です。
興味深いアイデアは、 'Where'の後に空の' SingleOrDefault'があり、2つの 'SELECT'文にコンパイルするのに不思議です。しかし、私はそれがEFで得られる最も近いものだと思います。 – wondra
トピックに関するより多くの研究をすればするほど、この回避策が唯一の答えであると確信しています。あなたが送ってほしくない本当に大きなブロブがないかぎり、私はそれを使うことを勧めません。(それほど大きなスケールでは、それは質問をする元の理由でしたが)それほど正確ではありません。 – wondra
データベースからすべてを取得したくない場合は、 'SingleOrDefault'の前に' Select'が必要です。選択されていないプロパティで結果をフィルタリングするには、 'Select'の前に' Where'が必要です。 –