0

我正在运行以下 LINQ 查询以进行分组CategoryID

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

但我收到以下错误:

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

知道为什么吗?

4

4 回答 4

2

我发现方法语法更容易遵循:

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

var test = ent.Products.GroupBy(p => p.CategoryId)
                       .Select(g => g.Key)
于 2012-06-13T12:49:45.800 回答
1

那是因为 aftergroup语句x不再可用。你只能g在那里使用。

于 2012-06-13T12:39:47.963 回答
1

你必须:

...
from something in g
select new {
  something.EntityKey
}
于 2012-06-13T12:40:05.633 回答
1

一旦您将一组数据分组到一个组中,您用于查询数据的变量(在您的情况下是)对于语句x变得不可用。select

分组后,您可以做的是使用组(在您的情况下是g),您可以在下面的语句中访问g.Key或查询g并访问它:fromselect

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

这是可能的,尽管我不能说这是最好的做法。(不是我说它不好,只是我很少看到这样的 LINQ 查询。我自己做过几次。)

于 2012-06-13T13:37:31.813 回答