誰かfrom
がlinqで何に使われているか説明できますか? MySQL ではfrom
、テーブルを指定するために使用されます。しかし、linqでの使用がわかりません。
var artists = from a in context.Artists
where a.Name.StartsWith("A")
orderby a.Name
select a;
基本的に同じ意味です。具体的from
には、データ ソースと範囲変数を指定できます。
つまりfrom a in Artists
、データ ソースを介してArtists
、シーケンスの連続する要素に名前を付けますa
。クエリの残りの部分では、 のa
要素を参照しますArtists
。
あなたが書いた上記のコードは、
var artists = context.Artists
.Where(a => a.Name.StartsWith("A"))
.OrderBy(a => a.Name);
SQL データベースを抽象化する LINQ プロバイダーで上記を実行した場合、最終的には次のようなものに変換されます。
select * from Artists a
where a.Name is like 'A%'
order by a.Name
LINQ での順序が少し異なる理由は、パーサーと IntelliSense エンジンを支援するためです。
これは、SQL とまったく同じ演算子です。クエリ ステートメントは、IntelliSense と型推論が機能するように逆方向に記述されているだけです。FROM が最後にある場合、これらの機能はうまく機能しません。
ツールを使用して SQL ステートメントを作成する場合も、基本的に同じことを行っています。最初に FROM をクエリする対象を指定し、次に JOIN リンクを描画してから、関心のある列を SELECT します。Linq クエリ内包表記と同様に、逆方向のワークフローでもあります。実際、SQL は後方にあると主張することができます :)
すべてのLINQ
クエリ操作は、次の 3 つの異なるアクションで構成されます。
from
句はデータ ソースを指定し、句where
はフィルターを適用し、句select
は返される要素の型を指定します。
したがって、クエリは次のようになります
var artists = context.Artists
.Where(a => a.Name.StartsWith("A"))
.OrderBy(a => a.Name);