Inquiridor
Simples Dúvida - MVC

Pergunta
-
[[ controler ]]
public ActionResult Index()
{
using (BancoDados db = new BancoDados())
{
var retorno = (from x in db.TB_USUARIO
select new
{
x.ID,
x.NOME
}).ToList();
return View(retorno);
}
}[[ views ]]
<br />
@foreach (var x in Model)
{
@(x.ID) <br /> @(x.NOME)
}
////////////////////////////////
Tenho sempre que tipar o linq?
Tipo ( select new CLASSE {} )
>>------------------------------------------>>
LINQ -> Uma das 7 maravilhas da informática.
Todas as Respostas
-
Não necessariamente, você usa SELECT NEW para retornar da lista os valores específicos do objeto, que no seu caso são ID e NOME. Caso haja mais valores no objetos ele não serão retornados.
Você pode retornar o objeto inteiro simplesmente assim:
using (BancoDados db = new BancoDados()) { var retorno = db.TB_USUARIO.ToList(); return View(retorno); }
-
Não necessariamente, você usa SELECT NEW para retornar da lista os valores específicos do objeto, que no seu caso são ID e NOME. Caso haja mais valores no objetos ele não serão retornados.
Você pode retornar o objeto inteiro simplesmente assim:
using (BancoDados db = new BancoDados()) { var retorno = db.TB_USUARIO.ToList(); return View(retorno); }
Luiz,
Desta forma que passou esta ok, funciona.
Mas passei um exemplo simples de select.Minha situação é que tenho consultadas que faço com inner join e outras bem mais complexas.
No caso para cada consulta teria que tipar o retorno..
Gostaria de algo mais "generico">>------------------------------------------>>
LINQ -> Uma das 7 maravilhas da informática. -
Olá.
É simples, basta no final da consulta LINQ em vez de você fazer:
select new { ....
faça assim:
from x in tabela
select x;
Pedro Henrique B. Fernandes
MCPD - Web Developer 4
Site: pedrofernandes.net -
Olá.
É simples, basta no final da consulta LINQ em vez de você fazer:
select new { ....
faça assim:
from x in tabela
select x;
Pedro Henrique B. Fernandes
MCPD - Web Developer 4
Site: pedrofernandes.netEntão Pedro é a mesma resposta que passei para o Luiz acima.
Consideramos a seguinte consulta abaixo, como proceder?
var retorno = (from x in db.TB_USUARIO
select new
{
x.ID,
x.NOME ,
qtdAcessos = x.TB_ACESSOS.where(dt => dt.DATA_ACESSO < DateTime.Now).Count(distinct)
}).ToList();
>>------------------------------------------>>
LINQ -> Uma das 7 maravilhas da informática.
- Editado KNascimento quarta-feira, 18 de abril de 2012 17:40
-
-
Dexter,
Qual é a sua dúvida exatamente?
Logo no primeiro post vocês está utilizando objetos anônimos, sem utilizar nenhuma classe.
Não é isto que você pretende?
Abraços,
Caio Proiete
Caio Proiete
Microsoft MVP, MCT, MCPD, MCTS, MCSD
http://caioproiete.net -
Dexter,
Qual é a sua dúvida exatamente?
Logo no primeiro post vocês está utilizando objetos anônimos, sem utilizar nenhuma classe.
Não é isto que você pretende?
Abraços,
Caio Proiete
Caio Proiete
Microsoft MVP, MCT, MCPD, MCTS, MCSD
http://caioproiete.net
Sim Caio. Quero retornar uma busca com objetos anônimos para a view.
Ex: select new { valor, valor }
>>------------------------------------------>>
LINQ -> Uma das 7 maravilhas da informática. -
Sim Caio. Quero retornar uma busca com objetos anônimos para a view.
Ex: select new { valor, valor }
:)
Então continuo sem entender... Você já está retornando objetos anônimos para a View.
Qual é a sua dúvida?
Abraços,
Caio Proiete
Caio Proiete
Microsoft MVP, MCT, MCPD, MCTS, MCSD
http://caioproiete.net -
Sim Caio. Quero retornar uma busca com objetos anônimos para a view.
Ex: select new { valor, valor }
:)
Então continuo sem entender... Você já está retornando objetos anônimos para a View.
Qual é a sua dúvida?
Abraços,
Caio Proiete
Caio Proiete
Microsoft MVP, MCT, MCPD, MCTS, MCSD
http://caioproiete.net
A dúvida é como utiliza-los na view
Se não estou tipando o select a view não reconhece as propriedades dentro do foreach.
Como no exemplo abaixo, a view não reconhece o campo1 e campo2.Exemplo:
[ na controler ]
var dados = from x in tabela select new { campo1, campo2 }; // SELEÇÃO NÃO TIPADA
retorn View(dados);[ na view ]
@foreach (var x in Model)
{
@(x.campo1) <br /> @(x.campo2); // EXIBIÇÃO DOS CAMPOS
}========================
>>------------------------------------------>>
LINQ -> Uma das 7 maravilhas da informática.- Editado KNascimento sexta-feira, 20 de abril de 2012 15:39
-
Olá,
Se estiver utilizando ASP .NET MVC 3, utilize um ExpandoObject para criar o modelo de dados que pretende usar na View, e declare o Model como sendo dynamic para poder acessar todos os membros do Model.
Como é natural, você não vai ter intellisense na View (porque é tudo dinâmico), mas vai funcionar como você quer...
Controller:
public ActionResult Index() { dynamic model = new ExpandoObject(); model.Nome = "Dexter"; model.Forum = "MSDN"; return View(model); }
View:
@model dynamic <p>Nome: @Model.Nome</p> <p>Forum: @Model.Forum</p>
Abraços,
Caio Proiete
Caio Proiete
Microsoft MVP, MCT, MCPD, MCTS, MCSD
http://caioproiete.net