Comment afficher la liste de données dans le modèle d'élément de liste de données
-
28-10-2019 - |
Question
Voici le problème que je rencontre dans mon projet de formulaire Web ASP.NET.
J'ai Datalist qui montre tous les produits de la base de données, chaque produit a une ou plusieurs couleurs. Pour le moment, j'écris des requêtes comme celle-ci afin d'afficher tous les produits et la photo par défaut de celui-ci, mais pas les couleurs liées à ce produit:
var query = from p in db.Products
from c in db.Pics
where c.ProductId == p.ProductId
where c.IsDefault == true
select new { p.ProductId, p.ProductType, p.Name, p.Number, p.Package, p.Model, p.Size, p.Material, p.MantoLengh, c.PicAddress};
DataList1.DataSource = query;
DataList1.DataBind();
La solution
Je pense que cette requête fonctionnerait bien que je m'excuse à l'avance si ma syntaxe est légèrement différente, je suis plus VB que C # ...
var query = from p in db.Products
select new { p.ProductId,
p.ProductType,
p.Name,
p.Number,
p.Package,
p.Model,
p.Size,
p.Material,
p.MantoLengh,
p.Pics.Where(x => x.IsDefault).Select(x => x.PicAddress).ToList(),
p.Colors.Select(x => x.ColorHex).ToList() };
Fondamentalement, dans le type anonyme que vous sélectionnez, vous pouvez utiliser lambda pour récupérer les collections un-à-plusieurs en utilisant Select (). ToList (), et utiliser .Where () pour effectuer le filtrage.
J'espère que cela vous aidera.
MODIFIER - En réponse à votre commentaire:
J'ai choisi les chaînes de couleurs hexadécimales car elles semblaient être le meilleur choix pour créer les couleurs réelles.Pour cerate une couleur à partir de Hex, voir cet article .À quel endroit de la liste voulez-vous ajouter les couleurs?
Autres conseils
Je pense qu'après avoir lié les résultats à votre datalist, vous devriez pouvoir faire quelque chose comme ça dans votre DataList $ <% # query.DataItem ("Colors")%>