J'ai une classe comme suit:Je ne comprends pas comment utiliser LINQ
Class Scan
Delivered As Boolean
ScanDate As Date
State As String
Facility As String
End Class
Je puis créer une liste et le remplir avec des scans contenant tout.
Dim Scans As New List(Of Scan)
J'ai besoin d'exploiter la liste pour obtenir diverses informations. Je voudrais utiliser LINQ pour le faire. Le problème est que pour la vie de moi, je ne comprends pas. La syntaxe me rejette, le fait que les résultats ne soient pas fortement typés me rejette, et l'échantillon sur le web est trop simplifié, ou trop compliqué.
Comment pourrais-je
- Obtenez un nombre de scans, regroupés par date où Livré = True
- Obtenir un nombre de scans, regroupés par facilité où Livré = True
- Obtenir un compte de scans , groupé par état où Delivered = True
Je veux ensuite utiliser ceci dans une boucle For Each.
For Each result In GroupedResults
‘My Code
Next
Idéalement, j'aimerais que le résultat soit fortement typé. Est-ce possible?
Quelqu'un peut-il recommander des liens pour commencer? Chaque site Web que je rencontre me fait nager. Je ne comprends pas du tout.
EDIT:
Merci beaucoup les gars. Je suis toujours en train de me gratter la tête, mais au moins c'est un exemple concret que je peux utiliser pour avoir une idée de ce qui se passe.
J'espérais que cet exemple simple m'aiderait à utiliser une approche plus complexe - pas de chance pour le moment. J'aurais dû le demander d'emblée.
Tous les exemples semblent utiliser une réponse clé/valeur. Et si j'ai deux valeurs à regrouper?
Class Scan
Delivered As Boolean
Scanned As Boolean
ScanDate As Date
State As String
Facility As String
End Class
1. Get a count of Delivered = True, a count of Scanned=True, grouped by Date
2. Get a count of Delivered = True, a count of Scanned=True, grouped by Facility
3. Get a count of Delivered = True, a count of Scanned=True, grouped by State
Est-il possible d'obtenir ceci dans un résultat?
Modifier Edit:
répondu à ma propre Modifier! Cela semble fonctionner pour moi:
Dim query = From r In scans _
Group r By r.ScanDate Into g = Group _
Select New With _
{g, .DeliveredCount = g.Count(Function(s) s.Delivered), .ScannedCount = g.Count(Function(s) s.Scanned)}
Merci beaucoup les gars. Vous m'avez au point où je pourrais pirater une solution. Je ne comprends toujours pas ce que je fais (Qu'est-ce que Function (s) ?!), mais j'ai quelque chose à commencer. J'ai l'intention de passer du temps à apprendre cela maintenant. Je pense que ce qui m'a vraiment découragé, c'est que les échantillons sur le net sont en C#. Normalement, je n'ai aucun problème à convertir la syntaxe, mais avec LINQ, ce n'est pas aussi simple. Je pensais que je faisais quelque chose de mal, mais c'était juste que la syntaxe était très différente.
Voulez-vous des décomptes séparés pour chaque date de livraison? Donc, vos résultats seraient: 3 ont été livrés le jour X, 6 ont été livrés le jour Y ... etc Est-ce ce que vous cherchez? –
Qu'est-ce qui vous fait penser que les résultats ne sont pas fortement typés? –
Ils sont fortement typés. Si vous lancez simplement une requête vanilla (à partir de s comme Scan select s), il ne sera pas converti en scan, mais vous pouvez utiliser rapidement CType pour le faire. –