使用LINQ进行分组

时间:2010-02-05 17:09:24

标签: .net sql xml vb.net linq

我有一点时间将简单的SQL查询转换为LINQ查询(使用vb顺便说一句)

这是我的SQL:

SELECT     USRDEFND5
FROM         int_gp_employee
GROUP BY USRDEFND5

xml看起来像这样:

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

我尝试过LINQ的许多不同版本。我目前的陈述是:

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

当我通过生成的集合进行操作时,每条线(17000)都显示出来。

谢谢你看看。

2 个答案:

答案 0 :(得分:3)

我担心我不确定VB的等价物,但在C#中这将是:

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

不使用XML文字,VB将是:

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

编辑:如果你只需要不同的键,那么就像:

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

答案 1 :(得分:0)

在另一个帖子中找到答案:

Here

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

应该是

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

获得唯一值,只有该列。