Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/329.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 将筛选器存储在自定义集合中并有条件地执行_C#_.net_Linq - Fatal编程技术网

C# 将筛选器存储在自定义集合中并有条件地执行

C# 将筛选器存储在自定义集合中并有条件地执行,c#,.net,linq,C#,.net,Linq,我有一个包含对象集合的Cusom集合对象。然后,我将两个UI元素(网格和图表)绑定到这个对象。网格显示所有对象,图表显示同一集合的子集 我希望能够在集合中注册一个过滤器(Func?),并有条件地执行过滤器以创建子集集合 我真的不知道该怎么做。任何指针都会非常有用。您可以使用LINQ扩展方法或指示应将哪些元素放置在该图表中。只有在集合实现IEnumarable接口时才有可能 Where扩展方法的示例如下: var filteredItem = items.Where(i => i.type

我有一个包含对象集合的Cusom集合对象。然后,我将两个UI元素(网格和图表)绑定到这个对象。网格显示所有对象,图表显示同一集合的子集

我希望能够在集合中注册一个过滤器(Func?),并有条件地执行过滤器以创建子集集合

我真的不知道该怎么做。任何指针都会非常有用。

您可以使用LINQ扩展方法或指示应将哪些元素放置在该图表中。只有在集合实现IEnumarable接口时才有可能

Where扩展方法的示例如下:

var filteredItem = items.Where(i => i.type == typeYouLookFor)
它使用,所以您不必声明任何附加函数。

您可以使用LINQ扩展方法或指示应在该图表中放置哪些元素。只有在集合实现IEnumarable接口时才有可能

Where扩展方法的示例如下:

var filteredItem = items.Where(i => i.type == typeYouLookFor)

它使用,因此您不必声明任何附加函数。

您只需将Func传入Where()静态方法即可。输出将是一个新的IEnumerable集合,您可以绑定到UI元素。您注册的函数必须是
Func
类型

如果您想在使用过滤器和不使用过滤器之间切换,可能最容易使用“非过滤”功能:

Func<ItemInYourCollection, Boolean> filter = (a) => true;
if(filtering) filter = registeredFilter;
UI.Data = rawData.Where(filter);
Func filter=(a)=>true;
如果(过滤)过滤器=registeredFilter;
UI.Data=rawData.Where(过滤器);

只需将Func传入Where()静态方法即可。输出将是一个新的IEnumerable集合,您可以绑定到UI元素。您注册的函数必须是
Func
类型

如果您想在使用过滤器和不使用过滤器之间切换,可能最容易使用“非过滤”功能:

Func<ItemInYourCollection, Boolean> filter = (a) => true;
if(filtering) filter = registeredFilter;
UI.Data = rawData.Where(filter);
Func filter=(a)=>true;
如果(过滤)过滤器=registeredFilter;
UI.Data=rawData.Where(过滤器);

您是否想要一组预定义的过滤器,有人可以在不知道实现细节的情况下进行选择?您是否想要一组预定义的过滤器,有人可以在不知道实现细节的情况下进行选择?