1

私はEntityFrameworkを初めて使用します。基本を理解しているとはいえ、理解できない特定の構文に出くわします。コードは機能しますが、それは私にとっては少し「ブラックボックス」であり、私はそれを理解していないために少し妨げられています。

私のクラスでは、次のようにローカルプライベート変数が宣言されています。

private clientexperienceEntities ceContext;

私のコードのさらに先では、次のようにインスタンス化します。

ceContext = new clientexperienceEntities();

この次の行は、私が苦労している部分です。

var client = ceContext.clients.First(a => a.ID == _ID);

具体的には、Firstメソッドのパラメーター、正確にはa => a.ID == _IDどういう意味ですか?値に含まれる主キー値に基づいて最初に一致するレコードを見つけることがコンテキストに指示されていることを私は知ってい_IDます。しかし、「a」がどこから来ているのか、または私が使用したい他の名前、「b」または「cat」がわかりません。

この構文はLinqの一部ですか?それを理解するために正確に何を検索すればよいのかさえわかりません。

私が言ったように、ステートメントは機能し、返されたエンティティを操作することはできますが、そのパラメータ構造を完全には理解していません。

4

3 に答える 3

5

ラムダ式についてもっと学ぶ必要があります

Lambda式は、C#3.0言語で導入されたインラインデリゲートです。これは、匿名メソッドを表す簡潔な方法です。

ラムダ式を作成するには、ラムダ演算子=>の左側に入力パラメーター(存在する場合)を指定し、反対側に式またはステートメントブロックを配置します。この場合:a => a.ID == _IDは、aという名前のClientExperienceのパラメータータイプを指定し、a.IDが_IDと等しい場合にtrueを返します。

于 2013-01-28T07:11:37.207 に答える
2

自分で表現を語るのがいいと思います。その行を書いたり読んだりすると、次のように聞こえます。

var clientは、方程式(a WHERE a.ID EQUALS _ID)の結果であるceContextの最初のクライアントです。

はい、Lambda変数には任意の名前を使用できます。数式を書くようなものです。x、a、y、xxx、catなどを解くことができます。

于 2013-01-28T07:16:44.757 に答える
1

a => a.ID == _IDとはどういう意味ですか?

これはlabmda式であり、フィルターとして機能します。

これは同じです-ドキュメントを読んでいない人にとってはより明確です:

clients.Where(x => x.ID == _ID).First();

この式は、オブジェクトX(クエリ内のすべてのオブジェクト)のフィールドID(x.ID)を_IDの値(ローカル変数である必要があり、名前を付けるとそのように示されます)と比較します。

フィルターです。フィールドIDが変数IDの値である最初の項目を取得します。

ここではラムダ式を読む必要があります。ラムダ式を理解しなければ、遠くまで行くことはできません。

于 2013-01-28T07:15:24.820 に答える