Conversione LINQ query da C# a VB.NET
-
venerdì 13 aprile 2012 06:17
Buongiorno a tutti. Ho un problema con una query linq che non riesco a convertire da C# a VB.NET.
Ho una ObservableCollection con una struttura così:
Jet Owner Item Comp AAAA AAAA 101 2210 AAAA AAAA 202 2220 AAAA AAAA 301 5550 AAAA AAAA 301 5560 AAAA 2210 101 6789 AAAA 2220 202 ABABA AAAA 5550 301 XXXX0 AAAA 5550 301 XXXX1 AAAA 5560 301 YYYY0 AAAA 5560 301 6612 AAAA 6789 101 ZZZZZ.0 AAAA 6789 101 ZZZZZ.1 AAAA 6789 101 ZZZZZ.2 AAAA 6789 101 ZZZZZ.3 AAAA ABABA 202 TTTTT.0 AAAA ABABA 202 TTTTT.1 AAAA ABABA 202 TTTTT.2 AAAA 6612 301 ZZZZZ.0 AAAA 6612 301 ZZZZZ.1 AAAA 6612 301 ZZZZZ.2 AAAA 6612 301 ZZZZZ.3 AAAB ... ... .....
Dovrei ordinarla per ottenere un risultato così:
Jet Owner Item Comp AAAA AAAA 101 2210 AAAA 2210 101 6789 AAAA 6789 101 ZZZZZ.0 AAAA 6789 101 ZZZZZ.1 AAAA 6789 101 ZZZZZ.2 AAAA 6789 101 ZZZZZ.3 AAAA AAAA 202 2220 AAAA 2220 202 ABABA AAAA ABABA 202 TTTTT.0 AAAA ABABA 202 TTTTT.1 AAAA ABABA 202 TTTTT.2 AAAA AAAA 301 5550 AAAA 5550 301 XXXX0 AAAA 5550 301 XXXX1 AAAA AAAA 301 5560 AAAA 5560 301 YYYY0 AAAA 5560 301 6612 AAAA 6612 301 ZZZZZ.0 AAAA 6612 301 ZZZZZ.1 AAAA 6612 301 ZZZZZ.2 AAAA 6612 301 ZZZZZ.3 AAAB ... ... .....
In particolare l'ordinamento viene fatto per "Jet", quindi se in "comp" trovo qualcosa che che è presente in "Owner", posiziono le righe sotto "Owner" del "comp" relativo, quindi ordino per "owner" e alla fine per "Item".
La query in C# è questa :
var orderedData =(from d in collection group d by d.Jet into g orderby g.Key from d in g select new[] {d}.Union(g.Where(c => c.Owner == d.Comp)) into withChildren from wc in withChildren orderby wc.Item select wc).Distinct();Vorrei ottenere lo stesso risultato in VB.NET. Ho proato la conversione, ma mi incarto sul "select".
- Modificato jotric1 venerdì 13 aprile 2012 06:51
Tutte le risposte
-
venerdì 13 aprile 2012 07:53
In che senso ti incarti sul select?
Come hai scritto finora la query in VB .NET che ti dà il problema? Ci mostri qualcosa?
Marco Minerva [MCPD]
Blog: http://blogs.ugidotnet.org/marcom
Twitter: @marcominerva- Modificato Marco MinervaMicrosoft Community Contributor venerdì 13 aprile 2012 07:53
-
venerdì 13 aprile 2012 08:05
Inizio col ringraziarti per l'attenzione.
Mi incarto nel senso che questa forma del "select "non ho idea di come possa essere riscritta in VB.NET.
La conversione fatta fin'ora è questa:
Ho trovato qualche esempio, ma nessuno significativo.Dim orderedData = (From d In collection Group d By d.Jet Into g = Group Order By g From d In g Select New With {.withChildren = {d}.Union(g.Where(Function(c) c.Owner = d.Comp))}
From wc In withChildren Order By wc.pos Select wc).Distinct
- Modificato jotric1 venerdì 13 aprile 2012 08:05
-
venerdì 20 aprile 2012 08:57
hai provato a convertire usando un tool (web, #develop)?
a me dà
(From withChildren In From g In From d In collectionGroup d By d.JetOrder By g.KeyFrom d In gNew () {d}.Union(g.Where(Function(c) c.Owner = d.Comp))From wc In withChildrenOrder By wc.Itemwc).Distinct()
... ovviamente il codice va verificato e testato
-
domenica 13 maggio 2012 02:54Proprietario
Ciao jotric1,
Potresti gentilmente aggiornarci sul thread? Sei riuscito a risolvere seguendo i suggerimenti ricevuti finora?
Grazie in anticipo della tua risposta,
Irina Turcu - Microsoft
[Manifesto] Regole e Aspetti generali all'uso dei forum MSDN
Questo contenuto è distribuito “as is” e non implica alcuna responsabilità da parte di Microsoft. L'azienda offre questo servizio gratuitamente, allo scopo di aiutare gli utenti e approfondire la loro conoscenza dei prodotti e tecnologie Microsoft.
-
lunedì 14 maggio 2012 06:30Mi scusa per il mancato aggiornamento della situazione, comunque alla fine ho cambiato approccio non riuscendo ad effettuare una conversione esatta, ho usato una variabile temporanea per dividere la query in due. Poco elegante ma funzionante. Grazie.




