筛选/排序列表框项目

本文关键字:项目 列表 排序 筛选 | 更新日期: 2023-09-27 18:26:45

我有一个列表框,其中的项目填充了堆叠面板,例如:

<StackPanel Orientation="Horizontal" Margin="5">
                <TextBlock x:Name="accessionNumber" Text="{Binding Path=accessionNumber}" />
                <TextBlock Text="{Binding Path=orderRadDept}" Margin="20,0,0,0"/>
            </StackPanel>

每个项中都有多个堆栈面板,每个堆栈面板都绑定到sql数据库中的不同值。

我正在尝试过滤/排序列表框项目,而不必每次都重新查询数据库。

例如,

IEnumerable<radOrder> filteredOrders2 =
                dc.radOrders.Where(o => o.orderRadDept == "CT")
                    .OrderBy(o => o.orderDateTime);
            OnScreenList.ItemsSource = filteredOrders2;

将通过查询数据库并返回我想要的项目来完成我需要做的事情。然而,如果我们这样做的话,我们的表现会有所损失。

我想做的是取OnScreenList,然后对其进行排序/筛选,这是因为我遇到了问题。

这是我所了解的:

             List<ListItem> list = new List<ListItem>(OnScreenList.Items.Cast<ListItem>());
             list.Sort();

我一直在尝试引用列表项的数据成员。

如有任何帮助或提示,我们将不胜感激。

(很抱歉,如果这是一个愚蠢的问题。我正试图同时自学C#、SQL和wpf/xaml。)

筛选/排序列表框项目

我认为直接过滤ListBox项不是一个好主意。我建议采取不同的方法。

创建一个列表AllItems,该列表将从SQL数据库中填充一次。该列表将具有必须在列表框中显示的所有记录,换句话说,它将是可以显示的超级记录集。

创建另一个列表DisplayList,该列表将用作您的ListBoxItemsSource

现在,每当您想对项目进行筛选时,请在AllItems列表中应用该筛选器,并将结果存储在DisplayList中。

通过这种方式,您不需要很长时间查询数据库,而且您可以轻松地过滤和排序DisplayList列表