& ldquo; Самый популярный & rdquo; GROUP BY в LINQ?

Нет, нет. Новое выражение допускает только инициализацию по умолчанию или вообще не инициализацию.

Обходным решением будет выделение необработанного буфера памяти с помощью operator new[], а затем построение объектов в этом буфере с использованием размещения-new с конструктором, отличным от стандартного.

30
задан ekad 30 November 2017 в 15:02
поделиться

4 ответа

Я вполне уверен, у Вас есть он право. И, SQL, который LINQ генерирует и отправит в Ваш дб, посмотрит точно так же, как SQL, который Вы запустили с, поэтому при выполнении немного большего количества ввода база данных не делает больше работы.

10
ответ дан James Curran 30 November 2017 в 15:02
поделиться
  • 1
    Тип. Свойство IsGenericType не доступно на netstandard 1.6 и ниже (и таким образом не доступно на.NET Core 1.0), но можно использовать TypeInfo. IsGenericType вместо этого: ввести. GetTypeInfo ().IsGenericType. – dotarj 13 October 2017 в 11:42

Если Вы хотите объекты Тега, почему бы не создать их непосредственно из Вашего запроса Linq?

var groups = from t in DataContext.Tags
             group t by t.Tag into g
             select new Tag() { Tag = g.Key, Frequency = g.Count() };

return groups.OrderByDescending(g => g.Frequency).Take(25);
24
ответ дан GalacticCowboy 30 November 2017 в 15:02
поделиться
  • 1
    Что, если MyType является открытым генетическим типом? Необходимо ли все еще назвать GetGenericTypeDefinitiin? Другими словами, почему делает typeof (Dictionary< >).GetInterfaces ().Contains (typeof (IDictionary< >)) возвращают false? – Daniel Arant 12 January 2018 в 17:14

При использовании подробной формы синтаксиса код будет подробным. Вот альтернатива:

List<Tag> result = 
  db.Tags
  .GroupBy(t => t.Tag)
  .Select(g => new {Tag = g.Key, Frequency = g.Count()})
  .OrderByDescending(t => t.Frequency)
  .Take(25)
  .ToList()
  .Select(t => new Tag(){Tag = t.Tag, Frequency = t.Frequency})
  .ToList();
12
ответ дан Amy B 30 November 2017 в 15:02
поделиться
  • 1
    Поскольку Вы can' t реализуют открытый универсальный интерфейс. Dictionary<,> реализации IDictionary<`0, `1>, где '0 и '1 относятся к параметрам типа Dictionary<,> - ищут его в ILDasm или подобный. – Anton Tykhyy 13 January 2018 в 06:21

Я думаю, что вы также несправедливы в том, что ваш SQL-запрос делает не то же самое, что и ваш LINQ-запрос - он не возвращает топ-25.

3
ответ дан 27 November 2019 в 23:59
поделиться
Другие вопросы по тегам:

Похожие вопросы: