Si d'Autre dans LINQ
Est-il possible d'utiliser des if Else conditionnelle dans une requête LINQ?
Quelque chose comme
from p in db.products
if p.price>0
select new
{
Owner=from q in db.Users
select q.Name
}
else
select new
{
Owner = from r in db.ExternalUsers
select r.Name
}
Vous devez vous connecter pour publier un commentaire.
Cela pourrait fonctionner...
Je suppose que de
db
que c'est LINQ-to-SQL /Entity Framework /similaire (pas de LINQ-to-Objets);Généralement, vous faire mieux avec le conditionnel de la syntaxe ( une ? b : c) - cependant, je ne sais pas si elle va travailler avec vos différentes requêtes comme ça (après tout, comment votre écriture le TSQL?).
Pour un exemple trivial de le type de chose que vous peut faire:
Vous pouvez faire beaucoup plus de choses, mais je doute vraiment que vous pouvez choisir la table au conditionnel. Vous êtes les bienvenus pour essayer, bien sûr...
Réponse ci-dessus n'est pas adapté pour compliquer expression Linq.
Tous vous avez besoin est:
vous devez modifier comme ceci:
mon exemple:
Si clientId = 0 nous voulons que TOUS les employés. mais pour tout clientId entre 1 et 999 nous voulons que seuls les clients avec cet ID. J'ai eu des problèmes avec les séparer LINQ déclarations ne sont pas les mêmes (Supprimé/Clients filtres ont besoin d'être sur toutes les requêtes), donc par ajouter ces deux lignes, il fonctionne (tous être en elle jusqu'à ce que nous avons 999+ clients - ce qui serait un plaisir de re-facteur de la journée!!