Esta é a minha sintaxe Linq que estou usando no meu modelo de entidade
IQueryable<string> objEmployee = null;
objEmployee = from res in _db.EMPLOYEEs
where (res.EMAIL == givenInfo || res.USER_NAME == givenInfo)
select res.EMAIL;
Como posso selecionar várias colunas? Como eu quero selecionar res.ID também. E como posso recebê-los? IQueryable não funcionará, eu acho. E isso é chamado de Linq para SQL - certo?
c#
linq
entity-framework
Riz
fonte
fonte
Respostas:
Como as outras respostas indicaram, você precisa usar um tipo anônimo.
No que diz respeito à sintaxe, eu pessoalmente prefiro o encadeamento de métodos. O equivalente de encadeamento de método seria: -
AFAIK, a sintaxe LINQ declarativa é convertida em uma cadeia de chamada de método semelhante a esta quando é compilada.
ATUALIZAR
Se você quiser o objeto inteiro, basta omitir a chamada para
Select()
, ou seja,fonte
Você pode usar tipos anônimos, por exemplo:
fonte
select new { Diff = (DateTime.Now - debt.ClaimDate), Amount = debt.Amount}
. O formulário usado na resposta é uma abreviação, onde o nome do membro na expressão de inicialização é usado como um nome de campo do tipo anônimo. Por exemplo,new {res.EMAIL, res.USER_NAME}
é uma abreviação denew {EMAIL = res.EMAIL, USER_NAME = res.USER_NAME}
. No caso de haver uma expressão, como no seu caso com datas - abreviação não se aplica, portanto, erro de compilador.OU você pode usar
Explicação:
Selecione funcionário do banco de dados como res.
Filtre os detalhes do funcionário de acordo com a condição where.
Selecione os campos obrigatórios do objeto funcionário criando um objeto Anônimo usando novo {}
fonte