2011-11-24 2 views
0
 var getAllProducts = _productService.GetAllProducts();  
     if (productstest.Count > 0) 
     { 
      model.idproduct.Add(new SelectListItem() 
      { 
       Value = "0", 
       Text = _localizationService.GetResource("Common.All") 
      }); 
      foreach (var m in getAllProducts) 
       model.idproduct.Add(new SelectListItem() 
       { 
        Value = m.Id.ToString(), 
        **Text = m.Size.Distinct().ToString(),** 
        Selected = model.Pid == m.Id 

       }); 
     } 

    public virtual IList<Product> GetAllProducts(bool showHidden = false) 
    { 
     var query = from p in _productRepository.Table 
        orderby p.Name 
        where (showHidden || p.Published) && 
        !p.Deleted 
        select p; 
     var products = query.ToList(); 
     return products; 
    } 

La question est même j'ai essayé de remplir la liste de sélection avec une taille distincte en utilisant: Text = m.Size.Distinct() ToString(), mais il montre le double par exemple. 100 produits sont de taille 33 cm, la liste va peupler la liste déroulante dans la vue avec 33cm se produisant 100 fois, je ne veux pas montrer 100 fois, je veux juste montrer 1 fois, Quelqu'un peut-il m'aider avec ce problème?Problème avec Affichage Distinct champs LINQ

Répondre

0

Je présume que vous essayez seulement de montrer un produit de chaque taille différente ... si initialisant si votre variable de getAllProducts comme il en va faire l'affaire:

var getAllProducts = _productService.GetAllProducts().GroupBy(p => p.Size).Select(g => g.First());