【问题标题】:Create a filtered view of an observablecollection and display it in listbox创建 observablecollection 的过滤视图并将其显示在列表框中
【发布时间】:2023-04-03 23:33:01
【问题描述】:

我有一个 ObservableCollection,其中包含来自使用 Linq 的数据库中的数据。我只需要将该集合的特定过滤项显示在我的列表框中。

我创建了一个 ICollectionView,我将其初始化为来自该 ObservableCollection 的默认视图。然后我试图通过使用 linq 过滤该视图,这就是问题所在。我的“过滤器”返回一个 IEnumerable,我不知道如何正确地将其转换为我的视图,以便我可以在列表框中显示视图。

ObservableCollection:

private ObservableMitarbeiterAufgabe mitarbeiterAufgabeData;

观点:

ICollectionView view = CollectionViewSource.GetDefaultView(mitarbeiterAufgabeData);

我的过滤器无法正常工作,因为它返回一个 IEnumerable:

var selected = (Mitarbeiter)lb_Ma_Au_Zuweisung.SelectedItem;
view.Filter = from ma in selected.MitarbeiterAufgabe select ma.Aufgaben;

如何让我的过滤器接受 IEnumerable?

编辑:添加完整的数据结构。

CREATE TABLE [dbo].[Mitarbeiter] (
    [Id]        INT          IDENTITY (1, 1) NOT NULL,
    [Vorname]   VARCHAR (50) NOT NULL,
    [Nachname]  VARCHAR (50) NOT NULL,
    [Belastung] INT          NULL,
    PRIMARY KEY CLUSTERED ([Id] ASC)
);

CREATE TABLE [dbo].[Aufgaben] (
    [Id]           INT           IDENTITY (1, 1) NOT NULL,
    [Name]         NVARCHAR (50) NOT NULL,
    [Beschreibung] NVARCHAR (50) NOT NULL,
    [Belastung]    INT           NOT NULL,
    PRIMARY KEY CLUSTERED ([Id] ASC)
);

CREATE TABLE [dbo].[MitarbeiterAufgabe] (
    [Id]            INT IDENTITY (1, 1) NOT NULL,
    [MitarbeiterID] INT NOT NULL,
    [AufgabenID]    INT NOT NULL,
    PRIMARY KEY CLUSTERED ([Id] ASC),
    CONSTRAINT [FK_MitarbeiterID] FOREIGN KEY ([MitarbeiterID]) REFERENCES [dbo].[Mitarbeiter] ([Id]),
    CONSTRAINT [FK_AufgabenID] FOREIGN KEY ([AufgabenID]) REFERENCES [dbo].[Aufgaben] ([Id])
);
var selected = (Mitarbeiter)lb_Mitarbeiter_Zuweisung.SelectedItem;

存储表“Mitarbeiter”中的对象。我需要过滤器为我提供来自“MitarbeiterAufgabe”的每个条目,其中 MitarbeiterID 与所选项目的 id 匹配。

【问题讨论】:

    标签: c# linq ienumerable icollectionview


    【解决方案1】:

    过滤器应该是一个检查是否包含项目的函数

    您实际上已经通过列出所有正确项目的列表来自己进行所有过滤。

    您的过滤器可能如下所示:

    view.Filter = ma => selected.MitarbeiterAufgabe.Contains(ma.Aufgaben);
    

    不知道确切的数据结构,这里不可能给出准确的答案..

    【讨论】:

    • 我添加了完整的数据结构,并试图更详细地解释我想要实现的目标,因为我似乎无法使用 lambda 进行正确的表达。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-06-28
    • 2021-03-19
    • 1970-01-01
    相关资源
    最近更新 更多