Мне не совсем понятно, как вы определяете, используется ли тег более чем одним изображением, потому что отображение между двумя классами кажется немного "грязным" (как я описал в комментарии под вопросом).
Но если предположить, что свойство Tag
- это свойство, которое мы использовали бы, чтобы увидеть, совпадают ли два объекта ImageTag
, то вы можете сделать что-то подобное, чтобы получить наиболее часто используемые теги:
var mostUsedTags = images
.SelectMany(i => i.Tags) // Get all the ImageTags from all the images
.GroupBy(t => t.Tag) // Group them by the Tag property
.OrderByDescending(g => g.Count()) // Order groups by their count (descending)
.Take(10) // Take the top 10 results
.Select(g => g.Count()); // Select the count associated with each tag
Вы также можете выбрать строку, в которой упоминается Tag
, чтобы вы могли определить, какие теги являются самыми популярными:
.Select(g => $"'{g.Key}' is associated with {g.Count()} images");
или просто заменить .Select()
на .ToList()
, чтобы получить список всех объектов IGrouping
, поэтому у вас есть все данные, связанные с каждой группой