2010-06-22 2 views
0

J'essaie de commander une liste de produits basée sur la propriété zindex de la table de références croisées avec la table de catégories (appelée dans ce cas 'Chassis'), mais j'obtiens l'erreur suivante:Linq to SQL/C#: Comment commander En utilisant la propriété dans la table de références croisées avec des expressions lambda

Impossible de classer par type 'System.Collections.Generic.IEnumerable`1 [System.Int32]'.

Ce qui suit est la méthode que je me sers:

public IQueryable<E_Product> Product_GetList_ByChassisId(int chassisId) 
{ 
    return dc.E_Products 
     .Where(x => x.Deleted == false) 
     .Where(x => x.Published == true) 
     .Where(x => x.E_Product_Chassis 
      .Any(c => c.ChassisId == chassisId && c.Deleted == false)) 
     .OrderBy(x => x.E_Product_Chassis.Select(c => c.Zindex)); 
} 

Je comprends la méthode .Choisir retourne un IEnumerable, mais étant un grand nombre à plusieurs, x.E_Product_Chassis ne permet pas une simple sélection de ses propriétés (egxE_Product_Chassis.Zindex).

Toute aide serait très apprécié ...

Répondre

2

FirstOrDefault(), min(), Max() - utiliser une de ces fonctions pour sélectionner le z-index approprié de l'ensemble.

public IQueryable<E_Product> Product_GetList_ByChassisId(int chassisId) 
{ 
    return dc.E_Products 
     .Where(x => x.Deleted == false) 
     .Where(x => x.Published == true) 
     .Where(x => x.E_Product_Chassis 
      .Any(c => c.ChassisId == chassisId && c.Deleted == false)) 
     .OrderBy(x => x.E_Product_Chassis.Min(c => c.Zindex)); 
} 
+0

Heh. Réponses en double – Toby

+0

"FirstOrDefault(), Min(), Max()" ... ou toute autre méthode de renvoi d'une valeur scalaire à partir d'une collection. Je voulais juste noter que ce ne sont pas vos seuls sélecteurs. – Marc

+0

Merci! Cela a fait l'affaire !! – user373253

Questions connexes