Проблема с размером шрифта LinQ - PullRequest
0 голосов
/ 25 февраля 2011

ОК, поэтому я использую LINQ для генерации облака тегов на основе тегов в моей базе данных.У меня есть проблема, которую я действительно не могу понять.Когда я добавляю тег в первый раз, он отображается самым крупным шрифтом (36pt) - думаю, из-за рассчитанного значения%, вес принимает значение 100 и передается в GetTagSize ().Есть ли способ разместить оператор if, где я делаю это: weight = (double) tagGroup.Count () / maxTagFrequencyNegative * 100, чтобы проверить количество 1 и отобразить наименьший шрифт?Спасибо за вашу помощь!

var tagSummaryNegative = from af in db.AgileFactors
                         join psf in db.ProjectStoryFactors on af.AgileFactorID equals psf.AgileFactorID
                         join s in db.Stories on psf.StoryID equals s.StoryID
                         join pim in db.ProjectIterationMembers on s.ProjectIterationMemberID equals pim.ProjectIterationMemberID
                         join it in db.Iterations on pim.ProjectIterationID equals it.ProjectIterationID
                         join pro in db.Projects on it.ProjectID equals pro.ProjectID
                         where pro.ProjectID == pro_id &&
                               pro.ProjectID == it.ProjectID &&
                               it.ProjectIterationID == pim.ProjectIterationID &&
                               pim.ProjectIterationMemberID == s.ProjectIterationMemberID && s.StoryCategoryID == 1 &&
                               s.StoryID == psf.StoryID &&
                               psf.AgileFactorID == af.AgileFactorID
                         group af by af.Name into tagGroup

                         select new
                         {

                             Tag = tagGroup.Key,
                             tagCount = tagGroup.Count()

                         };

int maxTagFrequencyNegative = (from t in tagSummaryNegative select (int?)t.tagCount).Max() ?? 0;


var tagCloudNegative = from af in db.AgileFactors
                   join psf in db.ProjectStoryFactors on af.AgileFactorID equals psf.AgileFactorID
                   join s in db.Stories on psf.StoryID equals s.StoryID
                   join pim in db.ProjectIterationMembers on s.ProjectIterationMemberID equals pim.ProjectIterationMemberID
                   join it in db.Iterations on pim.ProjectIterationID equals it.ProjectIterationID
                   join pro in db.Projects on it.ProjectID equals pro.ProjectID
                   where pro.ProjectID == pro_id &&
                         pro.ProjectID == it.ProjectID &&
                         it.ProjectIterationID == pim.ProjectIterationID &&
                         pim.ProjectIterationMemberID == s.ProjectIterationMemberID && s.StoryCategoryID == 1 &&
                         s.StoryID == psf.StoryID &&
                         psf.AgileFactorID == af.AgileFactorID
                   group af by af.Name into tagGroup
                   select new
                   {

                       Tag = tagGroup.Key,
                       weight = (double)tagGroup.Count() / maxTagFrequencyNegative * 100
                   };

public string GetTagSize(double weight)
{

    if (weight >= 99)
        return "36pt";
    else if (weight >= 80)
        return "29pt";
    else if (weight >= 64)
        return "23pt";
    else if (weight >= 48)
        return "18pt";
    else if (weight >= 32)
        return "14pt";
    else if (weight >= 10)
        return "11pt";
    else
        return "8pt";
}

Ответы [ 2 ]

0 голосов
/ 25 февраля 2011

Попробуйте:

weight = (tagGroup.Count() == 1) ? (double)1 : (double)tagGroup.Count() / maxTagFrequencyNegative * 100

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

0 голосов
/ 25 февраля 2011

Просто используйте оператор ?::

weight = (tagGroup.Count() == 1) ? smallestFont : ((double)tagGroup.Count() / maxTagFrequencyNegative * 100)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...