如何在Linq Group By Clause中获取所有选择键

时间:2009-10-13 06:51:35

标签: c# linq-to-objects

我试图在这个linq查询中获取其余的选择键,但是intellisense给了我一个错误

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()
                     };

如何获取这些选择键?

2 个答案:

答案 0 :(得分:6)

我假设questionidtime是您想要分组的属性:

您只能从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()
             };

答案 1 :(得分:0)

我不清楚你在问什么,我害怕。时间是什么”? questionidquestionid1之间的区别是什么?

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

如果你能更多地了解你所获得的数据以及你想要实现的目标,我们就更有可能帮助你。

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