Это мой синтаксис 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, верно?
Ответы:
Как указывали другие ответы, вам необходимо использовать анонимный тип.
Что касается синтаксиса, я лично предпочитаю цепочку методов. Эквивалент цепочки методов будет: -
AFAIK, декларативный синтаксис LINQ преобразуется в цепочку вызовов методов, аналогичную этой при компиляции.
ОБНОВИТЬ
Если вам нужен весь объект, вам просто нужно пропустить вызов
Select()
, т.е.источник
Вы можете использовать анонимные типы, например:
источник
select new { Diff = (DateTime.Now - debt.ClaimDate), Amount = debt.Amount}
. Форма, используемая в ответе, является сокращением, где имя члена в выражении инициализации используется как имя поля анонимного типа. Напримерnew {res.EMAIL, res.USER_NAME}
, это сокращение отnew {EMAIL = res.EMAIL, USER_NAME = res.USER_NAME}
. В случае, если есть выражение, как в вашем случае с датами, сокращение не применяется, следовательно, ошибка компилятора.ИЛИ вы можете использовать
Пояснение:
Выберите сотрудника из базы данных как res.
Отфильтруйте данные о сотруднике в соответствии с условием where.
Выберите обязательные поля из объекта сотрудника, создав анонимный объект с помощью new {}
источник