2010-09-14 4 views
0

Comment est-ce que je pourrais obtenir quelque chose comme ceci pour que je puisse modifier dynamiquement la clause where de cette requête linq to sql?Dynamique Où Linq to SQL

Dim AccountID = 1234 

Dim AccountList 

Select Case Types 
    Case 1 
     AccountList = (from a in dc.Accounts where a.ID = AccountID) 
    Case 2 
     AccountList = (from a in dc.Accounts where a.ID = AccountID And a.ParentID = AccountID) 
    Case Else 
     AccountList = (from a in dc.Accounts) 
End Select 

Return From p in dc.Products where AccountList.Contains(p.Order.Transaction.AccountID) 

Avec le code ci-dessus je reçois cette erreur:

opérations liaison tardive ne peuvent pas être convertis à un arbre d'expression

Répondre

3

On dirait que vous avez soit pas obtenu Option Strict sur . Mettez-le, et spécifiez le type de AccountList comme IQueryable(Of Account). Ensuite, vous n'utiliserez pas de liaison tardive, et tout devrait bien se passer.

+0

La liste de comptes est juste une liste de chaînes en réalité ce qui fait que IQueryable (of String) a fait l'affaire - merci! – EdenMachine