Linq Syntax - выбор нескольких столбцов - PullRequest
86 голосов
/ 21 июля 2011

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

Ответы [ 3 ]

169 голосов
/ 21 июля 2011

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

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

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);
69 голосов
/ 21 июля 2011

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

  var empData = from res in _db.EMPLOYEEs
                where res.EMAIL == givenInfo || res.USER_NAME == givenInfo
                select new { res.EMAIL, res.USER_NAME };
3 голосов
/ 27 апреля 2016
 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. Выберите сотрудника из БД в качестве res.

  2. Фильтрация сведений о сотруднике согласно условию where.

  3. Выберите обязательные поля из объекта сотрудника, создав объект Anonymous с помощью нового {}

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...