我有一个 IGrouping 类型的对象,并且想在不更改对象类型的情况下对组内的元素进行排序。
换句话说,我有
var tmp = group.OrderBy(x => x);
有group类型IGrouping<int, someanonymousclass>,我也想tmp成为类型IGrouping<int, someanonymousclass>。
一种解决方法是将其更改为 Dictionary 或新的匿名类,但我希望 tmp 具体为 type IGrouping<int, someanonymousclass>。
换句话说:我想对我的IGrouping<int, someanonymousclass>对象的元素进行排序。如果我使用OrderBy它会更改groupto的类型,IOrderedEnumerable我将无法再访问group.Key。我怎样才能维持这种类型group?
例子:
var states = SimulationPanel.innerPanel.Children.OfType<StateBar>().Where(x => x.isSensorState())
.GroupBy(x => (SensorElement)x.BauplanElement,
x => new
{
Start = (decimal)(x.Margin.Left / SimulationPanel.Zoom),
Width = (decimal)(x.Width / SimulationPanel.Zoom),
State = x.State
});
var group = states.First();
var tmp = group.OrderBy(x => x.Start);
var key = tmp.Key; //This does not work, because tmp is not of type IGrouping
我知道我可以OrderBy在分组之前使用。不过,我不想那样做。