2 votes

Quel est le meilleur moyen d'écrire une requête à deux colonnes dans LINQ to Entity 6? Et enregistrer les résultats dans deux variables différentes?

Comment écririez-vous "SELECT col.a, col.b FROM TABLE WHERE ID = 1" en LINQ to Entity 6 afin de pouvoir sauvegarder col.a dans la variable A et col.b dans la variable B. Vous pouvez le faire avec SqlReader en récupérant l'index ou le nom de la colonne, mais avec LINQ to Entity, il est retourné sous forme d'un objet unique. Lors du retour d'une requête LINQ à deux champs dans une liste, les deux champs sont sauvegardés dans le premier index de la liste et ne peuvent être accédés qu'en tant qu'élément de la même liste. Est-il habituel de créer deux requêtes LINQ, une pour chaque variable? Ou est-ce que je manque une partie du processus?

Requête actuelle:

var result = (from col in cxt.Table 
              where col.ID == "1" 
              select new {col.a, col.b}).ToList();

1voto

Gilad Green Points 29387

Si vous vous attendez à ce qu'un seul enregistrement soit renvoyé de la base de données, voici ce que vous pouvez faire :

var result = cxt.Table.FirstOrDefault(x => x.ID == "1");
// Remarquez que cela peut être nul s'il n'y a pas de résultat

var a = result.a;
var b = result.b;

Cela ressemblera très probablement à une syntaxe de requête similaire, mais je pense que cette syntaxe de méthode est plus élégante dans ce cas

0voto

Emdadul Sawon Points 2362

Je ne suis pas sûr de ce que vous cherchez exactement. Mais sélectionner deux variables par Linq n'est pas si difficile.

var value = (from ta in db.VotreTable
             where ta.ID = id
             select new {
                 A = ta.a,
                 B = ta.b
             }).FirstOrDefault();
var a = value.A;
var b = value.B;

Si vous utilisez ToList() au lieu de FirstOrDefault(), vous obtiendrez une liste contenant zéro ou plusieurs objets. Vous pouvez simplement utiliser une boucle pour obtenir le champ de chaque objet.

forach(var value in values)
{
    var a = value.A;
    var b = value.B;
}

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X