1

我正在尝试获取此 linq 查询中的其余选择键,但智能感知给了我一个错误

var query2 = from row2 in query1
                     group row2 by row2.questionid into g
                     where g.Count() > 0
                     select new
                     {
                         questionid1,   //Error here
                         time,          //Error here
                         thecount = g.Count()
                     };

我如何获得这些选择键?

4

2 回答 2

7

我假设questionid并且time是您要分组的属性:

您只能从 g 中获取分组的键,并且正如 Jon 所建议的那样,where 子句实际上并没有做任何事情。

试试这个:

var query2 = from row2 in query1
             group row2 by new { row2.questionid, row2.time } into g
//           where g.Count() > 0
             select new
             {
                 g.Key.questionid,
                 g.Key.time,
                 thecount = g.Count()
             };
于 2009-10-13T06:54:57.780 回答
1

恐怕根本不清楚你在问什么。时间是什么”?questionid和有什么区别questionid1

到您分组时,您基本上已经有了一系列的小组,而不是一系列的问题。当您投影这些组时,您可以使用组的Key属性来获取构成该组的键,并且您可以使用组内的值序列(这就是g.Count()您的示例中所做的)。例如,您可以获取组中的第一个结果,并访问其中的各个字段。

如果您能更深入地了解您拥有哪些数据以及您想要实现的目标,我们更有可能为您提供帮助。

作为附加说明 - 您的where条款目前没有做任何事情。当您按键分组时,您永远不会得到任何“空”组 - LINQ 不会组成实际数据中不存在的键。

于 2009-10-13T06:56:27.373 回答