0
我有一個類的成分,其中有一個屬性Items
的類型List<Ingredient>
。
在我的一個網頁,我使用一個GridView來顯示所有的成分,按首字母分組:LINQ查詢與按組和按升序排列不起作用
<Page.Resources>
<CollectionViewSource x:Name="IngredientsViewSource" IsSourceGrouped="True" ItemsPath="Items"/>
</Page.Resources>
加載頁面時,該CollectionViewSource的來源屬性設置是這樣的:
this.IngredientsViewSource.Source = CurrentData.Ingredients.GroupedItems;
GroupedItems
是要準備好使用的配料類,這需要以財產Items
和訂單和羣體一切的屬性:
public object GroupedItems
{
get
{
if (this.Items != null)
{
return from IngredientIteration in this.Items
//orderby IngredientIteration.Name ascending
group IngredientIteration
by IngredientIteration.FirstLetter
into IngredientGroup
//orderby IngredientGroup.Key ascending
select new {
FirstLetter = IngredientGroup.Key,
Items = IngredientGroup
};
}
else
{
return null;
}
}
private set { }
}
這是工作得很好。現在我想對結果進行排序,因爲現在第一個字母的順序都搞亂了。但是,當我刪除兩個orderby
子句前面的註釋標記時,它變得非常奇怪。現在留下像這樣的orderby子句會導致正確排序的組,但只顯示每個組的第一個項目。
但是,當我改變升序爲降序時,一切都按預期工作:組按降序排序,顯示所有項目,並且項目在每個組內按降序排序。
這對我來說毫無意義,爲什麼要降職但升職不是?我在這裏錯過了什麼嗎?
在我看來,你的'GroupedItems'將有'Items'作爲'IGrouping <...>',我懷疑這不是你想要的。 「GroupedItems」中每個條目的實際數據結構是什麼? –
我想收集這些匿名對象的每個字符串'FirstLetter'和'List'' Items'。 –