?: Opérateur de Requête LINQ
-
Comment puis-je utiliser ?: opérateur dans la clause SELECT de la requête LINQ? Si cela ne peut pas être fait, comment puis-je imiter un? Le but est d'obtenir un CAS de bloc dans ma clause select. Comme vous vous en doutez, j'obtiens une erreur: Invalide type anonyme membre de demande de déclaration. Type anonyme membres doit être déclarée avec un membre de la cession, simple nom ou de l'accès des membres.
-
Est-ce la bonne façon, ou d'une manière suffisante, pour dire "à partir d'une jointure interne je sur un.ipid=je.id inner join u sur je.uid=u.id"? Si non, veuillez en fournir une. Merci.
var query = from a in db.tblActivities from i in db.tblIPs from u in db.tblUsers select new { u.UserName == null ? i.Address : u.UserName, a.Request, a.DateTime };
Vous devez vous connecter pour publier un commentaire.
Lors de la création d'un type anonyme (ce que tu fais avec le "nouveau" sans spécifier un type de), vous devez spécifier le nom du membre pour chaque propriété. À partir de votre exemple, il ressemblerait à quelque chose comme ceci: (également fixé votre joint)
Vous pourriez probablement faire le nom d'utilisateur de votre chemin, trop:
mais la ?? l'opérateur est plus concis. Il est similaire à la "isnull" en SQL.
Vous devez utiliser la jointure mot-clé, et de définir la relation entre les entités afin de faire une jointure interne.
Ici vous pouvez trouver quelques exemples à ce sujet, je recommande fortement que vous obtenez LinqPad, son vraiment un outil précieux pour tester vos requêtes, en plus de son très bon pour apprendre, il a+ de 200 exemples.
si vous êtes à la vérification de la juste valeur null, vous pouvez également utiliser ??
Comme pour les exemples ci-dessus, il est bon de le faire ceux qui vont...
Les parenthèses ne sont pas obligatoires, mais ils ne l'aide à la lecture.
Vraiment. cette question dépend de la mise en œuvre de IQueryable que votre expression linq sera de retour. Je vois que vous avez db.XXX alors, êtes-vous à l'aide de linq to sql ou certains linq to magasin de données? Si oui, la mise en œuvre spécifique de IQueryable aurez besoin d'avoir un moyen de traduire votre expression dans un magasin d'expression.
Autre que les observations ci-dessus, certains des autres commentaires sont corrects que dans un type anonyme, vous devez spécifier un nom pour chaque membre. C'est vraiment votre erreur.
Je suis assez nouveau dans Linq to SQL, mais je suis sûr qu'il pourrait en aller comme ça:
Si l'instruction doit être entre parenthèses et les résultats à l'extérieur. Comme pour les jointures, vous suivez la chaîne vers le bas à partir de celui->beaucoup de.