c # group by не работает

#c# #group-by

#c# #группировка по

Вопрос:

у меня есть некоторые проблемы с моим кодом на c # везде в примерах, они делают это как я, но почему-то я получу некоторые ошибки

Компилятор говорит в g.Datum, что он не знает Datum

и в «return query» он говорит — cannot convert , есть явное преобразование

      var query = (from p in dataContext.Untersuchungen
                  orderby p.Datum
                  group p by p.Datum into g 
                  let number = (from n in dataContext.Untersuchungen
                                where n.Datum == g.Datum
                                select n).Count()
                  select new StatsistikObjekt() { Date1 = g.Datum, number1 = number });
       return query;
  

надеюсь, вы сможете мне помочь =)

Комментарии:

1. Очень интересно; я никогда не знал, что вы даже можете использовать let в запросе linq. Почти выглядело как смесь C # и F # = D

2. я полагаю, что g.Datum должно быть g.Key.

Ответ №1:

Типом переменной диапазона g является group, которая на самом деле не имеет Datum значения.

Вы можете легко исправить этот момент, учитывая вашу группировку (которая использует Datum в качестве ключа), а также упростить свой запрос, просто подсчитав размер группы:

 var query = (from p in dataContext.Untersuchungen
             orderby p.Datum
             group p by p.Datum into g
             select new StatsistikObjekt() { Date1 = g.Key,
                                             number1 = g.Count() });
  

Что касается возвращаемого значения — мы действительно не можем вам помочь в этом вопросе, поскольку мы не знаем возвращаемый тип, который вы пытаетесь вернуть.

Комментарии:

1. Я на полпути к написанию своего ответа и понимаю, что меня обогнал великий Джон Скит. Однажды, добрый сэр, однажды.

2. @Tim: Просто напишите свой собственный ответ и сравните его с супер-потрясающим супер-быстрым ответом Джона постфактум. Практика делает совершенным. Вы не станете лучше в оцепенении. Кроме того, кому-то может понравиться ваш ответ.

3. @Tim Я называю это получением «тарелочек». Продолжайте попытки. Вам может повезти, и в итоге получится что-то вроде этого i.imgur.com/GLcaM.png . Текущий результат; я: 1, Количество тарелочек: 2000

Ответ №2:

Попробуйте

g.Key вместо g.Datum