Entity Framework COMMANDE EN question
Que j'essaie de construire mon premier MVC 4 application à l'aide de entity framework. Tout ce que je suis à la recherche est de créer une liste déroulante avec la valeur et le texte de chaque option de la même valeur.
Cela fonctionne, droit jusqu'à ce que je jette dans la GroupBy()
.
Créer.cshtml
@Html.DropDownList("CustomerName",(SelectList)ViewData["companies"]);
ticketController.cs
ViewBag.companies = new SelectList(oc_db.company.Where(c => c.status == "ACTIVE")
.OrderBy(c => c.name_1)
.GroupBy(c=>c.name_1)
, "name_1", "name_1");
Voici l'Erreur que je reçois:
De liaison de données:
'Système.Les données.Objets.ELinq.InitializerMetadata+Groupement " 2[[Système.Chaîne,
mscorlib, Version=4.0.0.0, Culture=neutral,
PublicKeyToken=b77a5c561934e089],[OpsTicketing.Modèles.de la société,
OpsTicketing, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]'
ne contient pas de propriété avec le nom "name_1'.
Si je n'utilise pas le GroupBy
la requête fonctionne, mais avec des doublons.
OriginalL'auteur Dakine83 | 2013-01-29
Vous devez vous connecter pour publier un commentaire.
GroupBy
ne vous donne pas une énumération du type sous-jacent. Il vous donne une énumération deIGrouping
objets avec unKey
domaine qui vous donne la clé de la valeur pour le groupe et unIEnumerable
interface qui vous permet de parcourir les membres de ce groupe.Si tout ce que vous voulez, c'est une liste unique de
name_1
valeurs dans l'ordre, il suffit de sélectionner le champ et faire unDistinct
suivie par unOrderBy
:Notez que vous pourrait le faire sans la
.Select()
, mais vous auriez à définir "l'égalité" pour votrecompany
classe, ce qui est plus d'ennuis que cela vaut la peine pour cet exercice. C'est pourquoi laDistinct
n'a pas fonctionné avant - parce que vous n'avez pas à définir ce qui fait de deux sociétés distinctes.OriginalL'auteur D Stanley
Vous aurez à résoudre la requête avant d'effectuer l'égard du Groupe, vous pouvez le faire en appelant
.ToList()
OriginalL'auteur mattytommo
L'utiliser .Distinct()?
http://msdn.microsoft.com/en-us/library/bb348436.aspx
Devrait fonctionner si c'est tout ce dont vous avez besoin.
OriginalL'auteur Chen
Êtes-vous en utilisant le groupement juste pour faire la liste distinctes? Si oui, essayez:
OriginalL'auteur Scott Isaacs