これは、エンティティモデルに使用している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 });
私の知る限り、宣言型LINQ構文は、コンパイル時にこれに似たメソッド呼び出しチェーンに変換されます。
UPDATE
オブジェクト全体が必要な場合は、Select()
の呼び出しを省略するだけです。
var employee = _db.EMPLOYEEs
.Where(x => x.EMAIL == givenInfo || x.USER_NAME == givenInfo);
たとえば、匿名型を使用できます。
var empData = from res in _db.EMPLOYEEs
where res.EMAIL == givenInfo || res.USER_NAME == givenInfo
select new { res.EMAIL, res.USER_NAME };
var employee = (from res in _db.EMPLOYEEs
where (res.EMAIL == givenInfo || res.USER_NAME == givenInfo)
select new {res.EMAIL, res.USERNAME} );
または、使用できます
var employee = (from res in _db.EMPLOYEEs
where (res.EMAIL == givenInfo || res.USER_NAME == givenInfo)
select new {email=res.EMAIL, username=res.USERNAME} );
説明:
Dbからresとして従業員を選択します。
Where条件に従って従業員の詳細をフィルタリングします。
新しい{}を使用して匿名オブジェクトを作成し、従業員オブジェクトから必須フィールドを選択します