По сути, у меня есть коллекция объектов, каждый из которых реализует член типа IValueCollection
public interface IValueCollection : IEnumerable<decimal>
{
decimal this[int index] { get; set; }
}
MeasurementCollection.Values имеет тип IValueCollection.
Используя приведенную ниже логику, я хочу развернуть коллекцию IValueCollection и написал метод расширения ниже.
public static IEnumerable<IValueCollection> PivotValues(this MeasurementCollection items)
{
if(items.IsQuantized())
{
int s = (int)items.First().Template.Frequency; //
int c = items.Count;
for (int n = 0; n < s; n++)
{
IValueCollection v = new MeasurementValueCollection(c);
for (int m = 0; m < c; m++)
{
v[m] = items.ElementAt(m).Values[n];
}
yield return v;
}
}
}
должен сделать
{{1,2,3} {4,5,6} {7,8,9}} приводит к {{1,4,7}, {2,5,8}, {3,6,9}}
Тем не менее, я думаю, что есть более приятное, стройное и читаемое выражение для этого.
Может ли кто-нибудь указать мне правильное направление?
1012 * редактировать *
информация о базовых классах
interface IValueCollection : IEnumerable<decimal>
class MeasurementCollection : ICollection<IMeasurement>
interface IMeasurement
{
IMeasurementTemplate Template { get; }
......
}
interface IMeasurementTemplate
{
.....
MeasurementFrequency Frequency { get; }
}