Dans Entity Framework, je veux voir si je peux remplir un dictionnaire par rapport à l'un des modèles. Dans le passé, j'ai toujours mappé sur un objet modèle. Mais je voulais utiliser un objet dictionnaire pour éviter toute ambiguïté car plusieurs erreurs de types CLR.

var dictionaryFlatFee = new Dictionary<int, decimal?>();
var listOfFees = (from p in db.Pricings
                  select new dictionaryFlatFee
                         {
                              p.Id,
                              p.Price,
                         }).AsEnumerable()
                           .ToList();
2
Jefferson 28 août 2020 à 18:58

2 réponses

Meilleure réponse

Juste pour finaliser la réponse en raison de certains des commentaires pour la rendre plus claire. Tout ce que vous avez à faire est de récupérer db.Pricings et d'appeler la méthode ToDictionary() qui fait partie de l'API Enumerable:

var FeesDictionary = db.Pricings.ToDictionary(key=>key.Id, val=>val.Price);

db.Pricings renvoie un DbSet<Pricing> qui implémente IEnumerable<Pricing> afin de rendre toutes les méthodes Enumerable disponibles pour gérer les entités renvoyées. Vous pouvez toujours Select() avant de convertir le retour en Dictionary<int, decimal?>, mais c'est très inutile, alors omettez-le.

Je voudrais également vous renvoyer à ce site et je vais considérablement m'améliorer vos connaissances sur LINQ.

2
Mosia Thabo 28 août 2020 à 18:07

Vous pouvez sélectionner les données dont vous avez besoin et les insérer dans le dictionnaire dictionaryFlatFee par ForEach comme ceci

var dictionaryFlatFee = new Dictionary<int, decimal?>();
(from p in db.Pricings
    select new 
    {
        p.Id,
        p.Price,
    })
    .ToList().ForEach(a => dictionaryFlatFee.Add(a.Id, a.Price));

Une autre option est ToDictionary méthode

var dictionary = db.Pricings.ToDictionary(a => a.Id, a => a.Price);
0
Farhad Zamani 28 août 2020 à 16:33