У меня есть простой тип Question
:коллекция Упорядочение в группе разделов с помощью LINQ
public class Question
{
public string[] Tags { get; set; }
public DateTime Created { get; set; }
}
В то время как у меня есть список вопросов, мне нужно фильтровать их по списку тегов (так называемые фильтры). Вопросы, которые имеют большинство тегов, соответствующих списку фильтров, должны быть размещены выше в коллекции результатов. Я написал выражение для этого:
public IList<Question> GetSimiliar(IList<Questions> all, string[] filters)
{
var questions = all.Select(
x => new
{
MatchedTags = x.Tags
.Count(tag => filters.Contains(tag)),
Question = x
})
.Where(x => x.MatchedTags > 0)
.OrderByDescending(x => x.MatchedTags)
.Select(x => x.Question);
return questions.ToList();
}
Теперь мне нужна поддержка для такой ситуации, когда у меня есть более чем на один вопрос с тем же количеством соответствующих тегов. Такие вопросы следует сортировать по дате создания (от новейшей до самой старой).
Пример того, что я хочу:
фильтр: метки = [а, б, в]
сборник вопросов для фильтрации:
- q1 {метки = [а], создано = 1939}
- q2 {метки = [Ь], созданный = 1945}
- q3 {метки = [а, Ь, с], создано = 1800}
- Q4 { метки = [а, Ь], созданные = 2012}
- Q5 {метки = [г], создано = 1999}
результат - отсортированная коллекция:
- д3
- Q4
- q2
- q1
Как сделать это USIN g linq?
downvoter, вы серьезно? – jwaliszko