2010-02-05 22 views
6

Mam kawał czasu z przekształcenia prostego zapytania SQL do kwerendy LINQ (przy użyciu VB btw)Grupowanie za pomocą LINQ

Oto mój SQL:

SELECT  USRDEFND5 
FROM   int_gp_employee 
GROUP BY USRDEFND5 

xml wygląda to:

<int_gp_employee> 
    <row> 
    .... 
    <usrdefnd5>Some GUID</usrdefnd5> 
    </row> 
</int_gp_employee> 

Próbowałem już różnych wersji LINQ. Mój obecny jest stwierdzenie:

From b In xmlFile...<row> Group b...<usrdefnd5> By b...<usrdefnd5> INTO group

kiedy foreach przez powstały kolekcji, każda linia (17000) zjawia.

Dzięki za spojrzenie.

Odpowiedz

0

Znaleziono odpowiedź w innym wątku:

Here

From b In xmlFile...<row> Group b...<usrdefnd5> By b...<usrdefnd5> INTO group

powinien być

From row IN xmlFile...<row> SELECT row.<USRDEFND5>.value distinct

że dostaje unikalną wartość i tylko tę kolumnę.

3

Obawiam się, że nie wiem równowartość VB na pewno, ale w języku C# byłoby to:

var query = from row in xmlFile.Descendants("row") 
      group row by (string) row.Element("usrdefnd5"); 

Bez użycia literały XML, VB będzie:

Dim query = From row In document.Descendants("row") _ 
      Group row By CStr(row.Element("usrdefnd5")) 

EDIT: Jeśli wystarczy odrębne klucze, wtedy coś takiego:

Dim query = From row In document.Descendants("row") _ 
      Select CStr(row.Element("usrdefnd5")) _ 
      Distinct 
+0

Nadal zwraca wszystkie z nich. Szukam różnych wartości usrdefnd5. – spuppett

+0

Powinny zwracać wszystkie wiersze, ale pogrupować według tego pola. Każda grupa będzie sekwencją wierszy z tym kluczem. Czy potrzebujesz w ogóle wierszy lub * tylko * kluczy? –

+0

Potrzebuję tylko kluczy. – spuppett

Powiązane problemy