7
votes

Comment utiliser la variable de Linq retourné?

J'ai décidé de jeter un coup d'œil rapide sur le côté Linq des choses, par opposition à juste utiliser une boucle de forache droite, mais j'ai du mal à le faire au travail, principalement en raison de datatypes que je crois. Alors j'ai ceci, jusqu'à présent; p>

Argument 1: cannot convert from 
'System.Collections.Generic.IEnumerable<DeviceManager_take_2.SiteType>' to 
'DeviceManager_take_2.SiteType' 


1 commentaires

Est-il supposé être un seul match? Cela devrait fonctionner pour vous: var choisiSiteType = SiteTyPelist.Singleordfault (S => S.SITETypeid == Temp);


3 Réponses :


7
votes

Si votre type de retour est un seul:

 var selectedSiteType = (from sites in siteTypeList
                                       where sites.SiteTypeID == temp
                                       select sites).ToList();


2 commentaires

Pourquoi tu couls tu tolis? Il y a toujours eu un débat sur les mérites de Tolist () par opposition à TOARRAY () et si vous utilisez uniquement la valeur une fois que vous pouvez également laisser cela comme une expression de requête.


En fait, il y a beaucoup d'articles là-bas et des ramblings autour de .tolist / ienumerable et .toarray, les différences de performance étant si minimes qu'ils reposent sur la préférence des utilisateurs, ainsi que du fait que je suis contre la mentalité de "Oh, Je vais certainement toujours utiliser cela une fois ". De plus, je préfère travailler avec une liste que d'un iénumérable / tableau.



17
votes

Utilisez d'abord / FirstArdefault / simple / SingleFault pour obtenir un élément du type particulier de la collection. xxx


2 commentaires

Et j'utilise cela sur le retour Ienumerable de la Linq? Ou ammend-le à la fin de ma requête elle-même?


@ Shane.c vous pouvez faire soit; Le résultat sera le même.



4
votes

shane,

Je ne vais pas améliorer les réponses précédentes. Ils étaient tous les deux corrects. Je vais essayer d'expliquer un peu à vous, de sorte que vous le comprenez à l'avenir un peu mieux. P>

Que se passe-t-il, lorsque vous écrivez un morceau de code comme: p>

var selectedSiteType = from sites in siteTypeList
                               where sites.SiteTypeID == temp
                               select sites;


3 commentaires

Cela effectivement effacé beaucoup! Linq semble avoir tellement moins de tracas qu'une boucle de foreach. Tolist () crée-t-il une liste du type de données de ses articles? Ou une liste générique?


@ SHANE.C Eh bien, une liste "générique" est en fait une liste du type de données des éléments. Ce serait une liste non générique (c'est-à-dire une arraylist ) qui n'est pas du type de données approprié. Il est suffisant d'expérimenter vous-même de répondre à cette question.


Toujours. Je me suis rendu compte que dès que j'avais demandé à Haha. Déjà travaillé.