我有一个ObservableCollection,其中包含使用Linq来自数据库的数据。我只需要在列表框中显示该集合的特定过滤项即可。
我创建了一个ICollectionView,并将其初始化为该ObservableCollection的默认视图。然后我试图通过使用linq筛选该视图,这就是问题所在。我的“过滤器”返回一个IEnumerable,我不知道如何正确地将其强制转换为视图,以便可以在列表框中显示该视图。
ObservableCollection:
ICollectionView view = CollectionViewSource.GetDefaultView(mitarbeiterAufgabeData);
视图:
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])
);
如何使我的过滤器接受IEnumerable?
编辑:添加了完整的数据结构。
var selected = (Mitarbeiter)lb_Mitarbeiter_Zuweisung.SelectedItem;
{{1}}
存储表“ Mitarbeiter”中的对象。我需要过滤器才能为我提供“ MitarbeiterAufgabe”中所有条目,其中MitarbeiterID与所选项目的ID相匹配。
答案 0 :(得分:1)
该过滤器应该是检查是否要包含某项的功能
您实际上已经通过列出所有正确项的列表来自己进行所有过滤。
您的过滤器可能看起来像这样:
view.Filter = ma => selected.MitarbeiterAufgabe.Contains(ma.Aufgaben);
如果不知道确切的数据结构,就不可能在这里给出准确的答案。