c# - 複数項目 - linq 列 取得




Linqの構文-複数の列の選択 (2)

これは私のエンティティモデルに使用している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 empData = from res in _db.EMPLOYEEs
                where res.EMAIL == givenInfo || res.USER_NAME == givenInfo
                select new { res.EMAIL, res.USER_NAME };

他の答えが示したように、あなたは匿名型を使用する必要があります。

文法に関しては、私は個人的にメソッドチェインを優先しています。 等価を連鎖するメソッドは、次のようになります。

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);




entity-framework