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, создав анонимный объект, используя новый {}