Я пытаюсь использовать Concat()
на нескольких ISets, чтобы сделать один больший ISet.Поэтому я попробовал следующий фрагмент кода:
public class Foo
{
private Dictionary<Bii, ISet<Faa>> items = new Dictionary<Bii, ISet<Faa>>();
public ISet<Faa> GetCompleteList()
{
ISet<Faa> result = items.Values.Aggregate((x,y) => x.Concat(y));
return result;
}
}
Проблема в том, что это приводит к ошибке компилятора:
Не удается неявно преобразовать тип System.Collections.Generic.IEnumerable<Faa>
в System.Collections.Generic.ISet<Faa>
.Существует явное преобразование (вам не хватает приведения?)
И вторая ошибка:
Невозможно преобразовать лямбда-выражение в тип делегата System.Func<System.Collections.Generic.ISet<Faa>,System.Collections.Generic.ISet<Faa>,System.Collections.Generic.ISet<Faa>>
, так как некоторые из возвращаемого значениятипы в блоке неявно преобразуются в тип возврата делегата
Я также пытался использовать приведение типа:
ISet<Faa> result = items.Values.Aggregate((x,y) => (ISet<Faa>)x.Concat(y));
Но это даст мне InvalidCastException
, потому чтоэто должно быть ConcatIterator
или что-то в этом роде.
Как мне сделать хороший бросок, чтобы объединить все ISets в один ISet?