在LINQ中分组

时间:2012-06-13 12:38:07

标签: c# linq

我正在按照LINQ查询运行,以便按CategoryID

进行分组
var test = from x in ent.Products  
           group x by x.CategoryID into g
           select new  
           {
               x.EntityKey
           };

但我收到以下错误:

  

当前上下文中不存在名称“x”

知道为什么吗?

4 个答案:

答案 0 :(得分:2)

我发现方法语法更容易理解:

如果您希望test成为您的产品所属的CategoryId列表,请尝试:

var test = ent.Products.GroupBy(p => p.CategoryId)
                       .Select(g => g.Key)

答案 1 :(得分:1)

那是因为在group语句x不再可用之后。您只能在那里使用g

答案 2 :(得分:1)

你必须:

...
from something in g
select new {
  something.EntityKey
}

答案 3 :(得分:1)

只要您将一组数据分组到一个组中,用于查询数据的变量(在您的情况下为x)就不可用于select语句。

分组后,您可以执行的操作是使用该组(在您的情况下为g),您可以使用g.Keygfrom进行查询如下所示在select语句中进入其中:

var test = from x in ent.Products  
           group x by x.CategoryID into g
           from b in g
           select b.EntityKey;

这是可能的,虽然我不能说这是最好的做法。(不是说我说它很糟糕,只是我很少看到那样的LINQ查询。我自己做了几次。)< / p>