[c#] Linq 구문-여러 열 선택

이것은 내 엔티티 모델에 사용중인 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);


답변

예를 들어 익명 유형을 사용할 수 있습니다.

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

설명 :

  1. db에서 직원을 res로 선택하십시오.

  2. where 조건에 따라 직원 세부 정보를 필터링합니다.

  3. 새 {}를 사용하여 익명 개체를 만들어 직원 개체에서 필수 필드를 선택합니다.


답변