Ho utilizzato con successo un join interno sql con due tabelle in Webform per unire due tabelle a un singolo elenco non ordinato in html.
Sto usando Asp.net MVC 5 Entityframework 6
Sto cercando di unire le stesse due tabelle in MVC per generare nuovamente un singolo elenco non ordinato in html.
La prima tabella è denominata team con l'id della colonna, la seconda tabella è denominata teamgallery con un teamID di colonna. I valori di team.id e teamgallery.teamID sono uguali.
nel controller:
dynamic dmodel = new ExpandoObject();
dmodel.Teamre = (from pd in db.teams
join od in db.teamgalleries on pd.id equals od.teamID
where pd.Catresales == "yes"
select new
{
pd.id,
pd.name,
od.picture
}).ToList();
return View(dmodel);
Nella vista:
<ul>
@foreach (var teamre in Model.Teamre)
{
<li>
@teamre
</li>
}
</ul>
Nel browser Web restituisce una lista come questa:
{id = 1, name = John Doe, picture = picture1.jpg}
{id = 2, nome = Jane Doe, picture = picture2.jpg}
Se cambio il codice del rasoio per visualizzare solo i nomi:
@teamre.name
Ricevo questo errore
Errore del server nell'applicazione. 'oggetto' non contiene una definizione per 'nome'
L'errore mostra anche se scrivo
name = pd.name,
Grazie, l'aggiunta di un ViewModel per il nome e l'immagine ha risolto il problema.
public string picture { get; set; }
public string name { get; set; }
<ul>
@foreach (var teamre in dmodel.Teamre)
{
<li>
@teamre.name
</li>
}
Penso che usi la raccolta sbagliata per scorrere ... vedi il mio codice cambiare sopra.