gpt4 book ai didi

c# - CollectionViewSource分组,得到sum(Quantity)

转载 作者:太空宇宙 更新时间:2023-11-03 22:37:21 25 4
gpt4 key购买 nike

我有一个 CollectionViewSource,它的源是一个 ObservableCollection。

ListObservableCollection 上,我可以使用 linq 对我的对象进行分组,并对它们的数量求和,但是如何在 CollectionViewSource 上执行此操作(如果这是可能的),我在任何地方都看不到任何关于它的文档。

目前我只能使用 :

管理分组
ProductsView.GroupDescriptions.Add(new PropertyGroupDescription("Group"));

但我没有看到有关如何显示字段的总和或最大/最小值的信息?

编辑:

具体来说,我想做同样的事情:

liste_ass = liste_ass.GroupBy(l => l.Name)
.Select(cl => new Assemblage
{
Quantite = cl.Sum(c => c.Quantite),
ID = 0,
IdAffaire = cl.First().IdAffaire,
Name = cl.First().Name,
Priorite = 0,
Dessin = cl.First().Dessin,
Groupe = cl.First().Groupe,
Priorite = cl.Max(c=>c.Priorite),
ListeIdOperations = cl.First().ListeIdOperations,
}).ToList();

这就是我在 linq 中会做的事情。但是阅读 ICollectionView 时,似乎无法在 ICollectionView 上执行此操作,因为它是一个 View ,无法对它们执行任何操作。

最佳答案

您可以通过 CollectionView.Groups 属性访问每个 CollectionViewGroup,其中包含所有组的信息,包括 ItemCount。如果您想创建一个自定义组标题并将其显示在 UI 上,这里是一个示例:

    <ListBox ItemsSource="{Binding your view}">
<ListBox.Resources>
<local:ToAssemblageConverter x:Key="toAssemblageConverter"/>
</ListBox.Resources>
<ListBox.GroupStyle>
<GroupStyle HidesIfEmpty="True">
<GroupStyle.HeaderTemplate>
<DataTemplate>
<StackPanel Orientation="Horizontal"
DataContext="{Binding Items, Converter={StaticResource ResourceKey=toAssemblageConverter}}">
<TextBlock Margin="5 0" Text="{Binding Quantite}"/>
<TextBlock Margin="5 0" Text="{Binding Id}"/>
...
</StackPanel>
</DataTemplate>
</GroupStyle.HeaderTemplate>
</GroupStyle>
</ListBox.GroupStyle>
</ListBox>

public class ToAssemblageConverter : IValueConverter
{
public object Convert (object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
var cl = (IEnumerable)value;

return new Assemblage() {
Quantite = cl.Sum(c => c.Quantite),
ID = 0,
IdAffaire = cl.First().IdAffaire,
Name = cl.First().Name,
Priorite = 0,
Dessin = cl.First().Dessin,
Groupe = cl.First().Groupe,
Priorite = cl.Max(c=>c.Priorite),
ListeIdOperations = cl.First().ListeIdOperations,
}
}
}

关于c# - CollectionViewSource分组,得到sum(Quantity),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54360096/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com