Nano Hash - криптовалюты, майнинг, программирование

запрос linq для выбора 10 лучших записей с наибольшим количеством комментариев из таблицы

У меня есть две таблицы "СООБЩЕНИЯ" и "КОММЕНТАРИИ". У одного сообщения может быть много комментариев, и я хочу иметь возможность выбрать 10 лучших сообщений с наибольшим количеством комментариев. post_id — это FK в таблице комментариев. Я использую Linq to SQL. Пожалуйста, посоветуйте мне, как это сделать. Заранее спасибо.

ИЗМЕНИТЬ

var top = (from q in db.question_tables
                   from a in db.answer_tables
                   where q.QUEST_ID.Equals(a.ANS_QUEST_ID)
                   orderby q.QUEST_TEXT.Count() descending
                   select new
                   {
                       QUEST_TEXT = q.QUEST_TEXT


                   }).Take(10);

вот как сейчас выглядит мой запрос linq, он выдает ошибку «Операторы последовательности не поддерживаются для типа« System.String »». :/

02.01.2012

Ответы:


1

Это сообщение об ошибке связано с тем, что вы вызываете .Count() для строкового свойства (QUEST_TEXT). Это компилируется, потому что строки перечислимы. Однако Linq-to-SQL этого не понимает.

Если у вас есть связь между двумя таблицами, отображаемыми в файле DBML, вы можете использовать ее в своем выражении:

var top = (from q in db.question_tables
           orderby q.answers.Count() descending
           select q).Take(10);

Однако код, который вы разместили, не совсем соответствует описанию, которое вы дали. Вы упоминаете комментарии, но код говорит об ответах.

02.01.2012
  • получить 10 лучших вопросов с большинством ответов! 02.01.2012
  • @ShaneAdrianMuaz, я изменил код, чтобы показать answers вместо comments, но это действительно зависит от того, как настроен ваш DBML. Вы моделируете отношения между этими таблицами? Если да, узнайте, как называются отношения, и используйте это. 02.01.2012

  • 2

    Присоединяйтесь к Posts и Comments, упорядочивайте по Post.Comment счету по убыванию и займите 10 лучших.

    (from p in Posts
    from c in Comments
    where c.PostId == p.Id
    orderby p.Comments.Count() descending
    select p).Take(10);
    

    РЕДАКТИРОВАТЬ

    Судя по вашим изменениям, вы пытаетесь найти вопрос с самым длинным значением QUEST_TEXT. Если это то, что вам нужно, просто измените свой код на orderby q.QUEST_TEXT.Length descending, но это не похоже на то, что вы изначально просили.

    02.01.2012
  • Что делает from c in Comments where c.PostId == p.Id? 02.01.2012
  • @Magnus, который соединяет таблицу комментариев с таблицей сообщений. Имена свойств ID могут отличаться в вашем случае и могут быть просто изменены в соответствии с тем, как вы их определили. 02.01.2012
  • @scottm, я пробовал это, но это выдает ошибку, поскольку операторы последовательности не поддерживаются для типа «System.String». ... Я обновил вопрос, чтобы показать свой запрос сейчас. 02.01.2012
  • Разве вы не имеете в виду Count() вместо Count? 02.01.2012
  • @scottm это будет сделано автоматически, если вы используете свойство p.Comments, как у вас есть. 02.01.2012
  • Новые материалы

    Кластеризация: более глубокий взгляд
    Кластеризация — это метод обучения без учителя, в котором мы пытаемся найти группы в наборе данных на основе некоторых известных или неизвестных свойств, которые могут существовать. Независимо от..

    Как написать эффективное резюме
    Предложения по дизайну и макету, чтобы представить себя профессионально Вам не позвонили на собеседование после того, как вы несколько раз подали заявку на работу своей мечты? У вас может..

    Частный метод Python: улучшение инкапсуляции и безопасности
    Введение Python — универсальный и мощный язык программирования, известный своей простотой и удобством использования. Одной из ключевых особенностей, отличающих Python от других языков, является..

    Как я автоматизирую тестирование с помощью Jest
    Шутка для победы, когда дело касается автоматизации тестирования Одной очень важной частью разработки программного обеспечения является автоматизация тестирования, поскольку она создает..

    Работа с векторными символическими архитектурами, часть 4 (искусственный интеллект)
    Hyperseed: неконтролируемое обучение с векторными символическими архитектурами (arXiv) Автор: Евгений Осипов , Сачин Кахавала , Диланта Хапутантри , Тимал Кемпития , Дасвин Де Сильва ,..

    Понимание расстояния Вассерштейна: мощная метрика в машинном обучении
    В обширной области машинного обучения часто возникает необходимость сравнивать и измерять различия между распределениями вероятностей. Традиционные метрики расстояния, такие как евклидово..

    Обеспечение масштабируемости LLM: облачный анализ с помощью AWS Fargate и Copilot
    В динамичной области искусственного интеллекта все большее распространение получают модели больших языков (LLM). Они жизненно важны для различных приложений, таких как интеллектуальные..