2009-07-15 6 views
6

ラムダ式がSelect * from TableNameであることを知りたいだけです。 プレーンなLINQのように、var res=from s in db.StudentDatas select sになります。 ここにStudentDataは表の名前です。Select *のラムダ式

ありがとうございました。

+1

ラムダ式は、匿名の機能ではなく、クエリです。彼らはしかし、クエリの一部として使用されています... –

+5

なぜ簡単な説明で十分ですdownvoted、このような質問ですか? –

+2

@ロベルト・ハーベイ:私たちは嫌悪者の世界に住んでいるので、 –

答えて

12

ラムダ式が必要とされていません。

var res = db.StudentDatas; 

あなたがいずれかを使用できますが、それはむしろ無意味のようになります。

var res = db.StudentDatas.Select(s => s); 
+0

論理的な観点からは必要ありませんコンパイラがSelect()呼び出しを最適化した場合、LINQ to SQLがデータベースクエリを呼び出す機会はありません。 –

+0

私は使用しませんが、知りたかっただけです。表現に感謝します。 – Wondering

+0

@リチャードあなたが何を言っているのか分かりません。コンパイラは、実行する必要のあるコードを最適化しません。 –

1

ラムダ式は必要ありません。コレクションのすべてのメンバーがほしいだけです。

3

コンパイラは、これらの線に沿って何かにそれを翻訳します:

db.StudentDatas.Select(s => s) 

SQLへの変換は、基本クラスライブラリによって行われます。 SQL、当然のことながら、ラムダ式を使用していません...

+0

"db"とは何ですか? ? – ShaileshDev

+0

DbContextの共通変数名 https://msdn.microsoft.com/en-us/library/system.data.entity.dbcontext(v=vs.113).aspx –

0

どちらも技術的には正しいですが、どちらも単純な形式で同じ結果が得られます。これは、db.tableのデフォルト動作が「選択」であるためです。背後では、彼らは異なっています。 1つはSystem.Data.Linq.Tableですが、もう1つはSystem.Linq.IQuerableです。 例えば

var x = db.table ; var y= db.table(s=>s); 
X = y; 

は、コンパイルエラーになります。

ダイナミックLinqライブラリを使用する場合、実行時に動的クエリを作成する必要がある場合は、最初の選択としてIQuerableを使用する必要があります。どのVAR qry = db.table; とは対照的に、そして、あなたのようなクエリに行くと連鎖することができvar qry = db.table(s=>s);を意味しますqry = qry.Where(bla bla bla);

がセッションをかむいくつかの爪の後に苦労して、それを見つけました。

-2

コード:

var allmember = eg_.table.where(x=>x).ToList();