0
votes

Différentes façons de remplir un modèle en MVC C # à partir d'une requête LINQ?

Ainsi, comme le dit le titre, j'essaie de peupler mon modèle de Linq. Je peux le peupler comme une liste mais y a-t-il d'autres moyens d'obtenir des données dans le modèle? Donc, j'ai ma classe de modèle: xxx

et j'ai un contrôleur qui fonctionne si je veux remplir le modèle sous forme de liste: xxx

Mais si je ne veux pas que ce soit une liste? Comment puis-je ajouter les données au modèle sans le spécifier en tant que liste?


2 commentaires

Je ne suis pas sûr de comprendre ce que vous voulez dire. Rien ne vous empêche d'utiliser d'autres types de collecte (hashset, une matrice, observablecollection, peu importe ...), des interfaces (ironlylist, iEnumérables) ou même une classe personnalisée plus complexe classe publique MyModel {IrreadOnlist modèles {get; } Public SomeadDitionnalData Data {get;}} comme modèle. Que veux-tu accomplir? Quel est le problème?


Je conviens que cette question peut être clarifiée un peu ... demandez-vous de la meilleure façon d'obtenir la collection de la valeur de retour LINQ (votre contenu)? demandez-vous si vous pouviez utiliser quelque chose qui n'est pas une liste? demandez-vous quelles optimisations peuvent être faites à votre code?


3 Réponses :


1
votes

Ce n'est pas clair pour moi, mais modèle n'a pas besoin d'être une liste. Il devrait correspondre au type attendu dans la vue (Déclaration @model dans le fichier de bobinage du fichier index.cshtml ).

aussi, je pense que le code devrait être: xxx

Le code d'origine créait un modèle pour chaque propriété, en définissant une propriété et laissant les autres avec les valeurs par défaut.


1 commentaires

Toutes les réponses ici sont de bonnes informations, mais celle-ci correspond au mieux avec le code que je travaillais. Merci!



0
votes

Vous voulez dire que vous voulez seulement un client ? Si oui, lequel? Peut-être qu'un avec un CustomerID ? Une fois que vous avez déterminé cela, vous mettrez à jour votre requête pour renvoyer un enregistrement; Quelque chose comme: xxx

De plus, vous voudrez peut-être examiner dans le cadre d'entité. Il devrait simplifier une partie de votre interrogation, car vous êtes en quelque sorte interrogé, convertissant, puis convertir à nouveau. Vous pouvez faire tout cela en une étape avec cadre d'entité


0 commentaires

0
votes

Vous pouvez faire ceci:

var content = from c in db.PCustomers
              where c.Cust_Wholesale_Customer == -1
              where c.Cust_Account_Status != 2
              join csi in db.PCustomer_Sales_Info on c.Cust_Key equals csi.CustSls_Cust_Key
              join cpg in db.PCustomer_Pricing_Groups on csi.CustSls_CustPrcGrp_Key equals cpg.CustPrcGrp_Key
              select new CustomersModel
              { 
                  CustomerId = c.Cust_ID, 
                  CustomerName = c.Cust_Description, 
                  PricingGroup = cpg.CustPrcGrp_Description, 
                  PrGrId = cpg.CustPrcGrp_Key 
              };


0 commentaires