Как получить все выбранные ключи в Linq Group By Clause - PullRequest
0 голосов
/ 13 октября 2009

Я пытаюсь получить остальные клавиши выбора в этом запросе 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 ]

6 голосов
/ 13 октября 2009

Я предполагаю, что questionid и time - это свойства, по которым вы хотите сгруппировать:

Вы можете получить ключи, сгруппированные по g, только из g, и, как предположил Джон, предложение 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()
             };
0 голосов
/ 13 октября 2009

Боюсь, не совсем понятно, о чем ты спрашиваешь. Сколько времени"? В чем разница между questionid и questionid1?

К тому времени, когда вы сгруппировались, у вас есть последовательность групп , а не последовательность вопросов . Когда вы проектируете эти группы, вы можете использовать свойство Key группы, чтобы получить ключ, который формирует эту группу, и вы можете использовать последовательность значений внутри группы (что и делает g.Count() в вашем примере ). Например, вы можете взять первый результат в группе и получить доступ к отдельным полям в нем.

Если бы вы могли дать больше представления о том, какие данные у вас есть и чего вы пытаетесь достичь, у нас гораздо больше шансов помочь вам.

Как дополнительное примечание - ваше предложение where в данный момент ничего не делает. Когда вы группируете по ключу, вы никогда не получаете «пустых» групп - LINQ не собирается составлять ключи, которых нет в реальных данных.

...