У меня есть код, ожидающий ICollection
. Теперь я хочу разделить эту коллекцию на более мелкие куски, группируя их на основе данного атрибута (все элементы в моей коллекции являются экземплярами абстрактного базового класса, однако для устаревшего кода мы не используем общую версию этого интерфейса). Поэтому я хотел бы получить список перечислимых списков (по одному для каждой группы). Для этого я планировал преобразовать ICollection
в общий IEnumerable<T>
с использованием Cast<T>
-метода на ICollection
, а затем построить словарь из этого IEnumerable<T>
с использованием LINQ-запроса. Но я упал, может быть, есть некоторые более подходящие подходы. У вас есть?Работа с ICollection и IEnumerable <T>
public override void DoSomething(ICollection features)
{
var grp = features.Cast<MyBaseClass>().GroupBy(x => x.table);
foreach(var g in grp) base.DoSomething(g);
}
EDIT: Таким образом, базовый метод (конечно) имеет такое же Signatur (также ожидает, что экземпляр ICollection
), как я могу получить значение групп обратно к (необщему) ICollection
?
Предоставьте нам код, который, по вашему мнению, не лучший способ. Также обратите внимание, что вы должны задать такой вопрос на http://codereview.stackexchange.com/. –
Поскольку вы рассматриваете LINQ: вы нашли метод расширения .OfType 'extension? –
CompuChip
@CompuChip Я заметил это, но никогда не использовал его. Отличная идея. – HimBromBeere