1. ホーム
  2. c#

[解決済み】Linq 構文 - 複数列の選択

2022-02-14 11:49:42

質問

これは、私のエンティティモデルで使用しているLinq構文です。

IQueryable<string> objEmployee = null;

objEmployee = from res in _db.EMPLOYEEs
              where (res.EMAIL == givenInfo || res.USER_NAME == givenInfo)
              select res.EMAIL;

複数の列を選択するにはどうすればよいですか?例えば、res.IDも選択したいのですが。また、それらを受け取るにはどうしたらよいでしょうか?IQueryableはうまくいかないと思います。 そして、これはLinq to SQLと呼ばれます - そうですか?

解決方法は?

他の回答が示すように、匿名型を使用する必要があります。

構文に関しては、個人的にはメソッドチェイニングの方がずっと好きです。メソッドチェイニングに相当するものは以下の通りです。

var employee = _db.EMPLOYEEs
    .Where(x => x.EMAIL == givenInfo || x.USER_NAME == givenInfo)
    .Select(x => new { x.EMAIL, x.ID });

AFAIKでは、宣言的なLINQの構文は、コンパイル時にこのようなメソッド呼び出しチェーンに変換されます。

アップデイト

オブジェクト全体が必要な場合は、以下の呼び出しを省略する必要があります。 Select() すなわち

var employee = _db.EMPLOYEEs
    .Where(x => x.EMAIL == givenInfo || x.USER_NAME == givenInfo);