Linq Syntax - выбор нескольких столбцов

Это мой синтаксис 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 - правильно?

Ответ 1

Как указывали другие ответы, вам нужно использовать анонимный тип.

Что касается синтаксиса, я лично предпочитаю метод цепочки. Эквивалент цепочки методов будет: -

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

AFAIK, декларативный синтаксис LINQ преобразуется в цепочку вызовов метода, подобную этому при компиляции.

UPDATE

Если вам нужен весь объект, вам просто нужно опустить вызов Select(), т.е.

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

Ответ 2

Вы можете использовать анонимные типы, например:

  var empData = from res in _db.EMPLOYEEs
                where res.EMAIL == givenInfo || res.USER_NAME == givenInfo
                select new { res.EMAIL, res.USER_NAME };

Ответ 3

 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.

  • Отфильтровать сведения о сотрудниках в соответствии с условиями условия.

  • Выберите требуемые поля из объекта employee, создав анонимный объект, используя новый {}