Скажи, что у меня был класс:
public class Post
{
public int PostId { get; set; }
public string Topic { get; set; }
public int UserId { get; set; }
[StringLength(5000)]
public string Body { get; set; }
public DateTime DateCreated { get; set; }
public string Name { get; set; }
public int Votes { get; set; }
}
И для каждого сообщения пользователь может ввести тему. Например, если темы были «Красные», «Зеленые», «Синие» и «Желтые», как я могу создать список, основываясь на том, сколько раз они использовались?
Пример вывода:
Red | 70
Blue | 60
Green | 40
Yellow| 35
РЕДАКТИРОВАТЬ: Почему это не работает и выдает ошибку, когда я не могу неявно преобразовать тип?
public List<string> GetPopularTopics(int count)
{
var posts = from p in db.Posts
group p by p.Topic into myGroup
select new
{
Topic = myGroup.Key,
Count = myGroup.Count()
};
return posts.ToList();
}
РЕДАКТИРОВАТЬ 2:
Итак, я опробовал ваше решение на Дастине, и у меня появляется ошибка. Вот что я использовал:
public IEnumerable<IGrouping<string,int>> GetPosts()
{
var posts = from p in db.Posts
group p by p.Topic into topicCounts
select new
{
Topic = topicCounts.Key,
Count = topicCounts.Count()
};
return posts.ToList();
}
Это дает мне ошибку в posts.ToList ():
Не удается неявно преобразовать тип 'System.Collections.Generic.List' в 'System.Collections.Generic.IEnumerable>'. Существует явное преобразование (вам не хватает приведения?)