Je me demande comment résoudre au mieux ce problème, car ce que j'ai maintenant fonctionne très bien pour une colonne codée en dur selon moi - je me demande comment je peux l'étendre pour permettre à la colonne d'être dynamique.Groupe LINQ dynamique par requête dans ASP.NET MVC
CONTRÔLEUR:
var dc = new DataContextDC();
return View(dc.items.Where(i=>i.IsPublic == true));
VIEW:
<% foreach (var grp in Model.GroupBy(s => s.GroupColumn)) { %>
<%= Html.Encode(grp.Key) %>
<% foreach (var item in grp) { %>
<%= Html.Encode(item.Title) %>
<% } %>
<% } %>
Comme indiqué, l'objectif est de permettre à l'utilisateur de choisir la colonne qui remplace "GroupColumn" ci-dessus. Je voudrais éviter d'ajouter des bibliothèques externes, etc.
Je vois en utilisant la réflexion (lent, mais entièrement dynamique) ou comme c'est une vue dans mon application, je viens de dupliquer le code ci-dessus pour chaque colonne dans la base de données puis mettre une instruction switch sur elle (rapide et sale, mais efficace)
Quelle serait la meilleure pratique? Dois-je compiler le fichier .CS séparément? ou devrais-je simplement l'inclure dans mon propre projet? – Nate
@Nate Bross: Il n'y a pas de meilleure pratique spécifique; Si vous prévoyez la possibilité de réutiliser la fonctionnalité dans une application différente, compilez-la en tant que bibliothèque séparée (il existe déjà un fichier '.sln'), sinon l'une ou l'autre façon fonctionne. C'est MSPL donc vous pouvez faire tout ce que vous voulez avec; la seule chose que vous ne pouvez pas faire est de redistribuer le fichier source lui-même sans la ligne de copyright en haut. – Aaronaught
OK, appelez-moi stupide, mais je ne peux pas obtenir ce code pour fonctionner dans la vue, cela fonctionne dans mon contrôleur, mais je ne peux pas comprendre comment ajouter 'using System.Linq.Dynamic' à la vue et' < % @ Import ...%> 'ne fonctionne pas, y a-t-il quelque chose qui me manque? – Nate