Синтаксис 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 ну и ладно. И как я могу их получить? Я думаю, что это не сработает. И это называется Linq to SQL-правильно ?
3 ответа:
как показали другие ответы, вам нужно использовать анонимный тип.
что касается синтаксиса, я лично предпочитаю метод цепочки. Метод цепочки эквивалентно было бы: -
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} );
пояснение :
выберите сотрудника из БД как res.
отфильтруйте сведения о сотруднике в соответствии с условием where.
выберите необходимые поля из объекта employee, создав анонимный объект с помощью new { }