C# 使用lambda表达式筛选ObservableCollection列表

C# 使用lambda表达式筛选ObservableCollection列表,c#,wpf,mvvm,lambda,observablecollection,C#,Wpf,Mvvm,Lambda,Observablecollection,我想知道是否有人告诉我为什么查询上的过滤在我下面的代码中不起作用querys.List.Where(x=>x.Name.Equals(value))始终包含整个列表。无需筛选。我的lambda表达式有问题吗 视图模型: namespace DataRetrieval.ViewModel { public class QueriesViewModel:BindableBase { public QueriesViewModel() {

我想知道是否有人告诉我为什么
查询
上的过滤在我下面的代码中不起作用
querys.List.Where(x=>x.Name.Equals(value))
始终包含整个列表。无需筛选。我的lambda表达式有问题吗

视图模型:

namespace DataRetrieval.ViewModel
{
    public class QueriesViewModel:BindableBase
    {
        public QueriesViewModel()
        {
            Queries = new Queries();

                for (int i = 0; i < 5; ++i)
                {

                    var query = new Query { Name = "Query "+i.ToString() };

                    Queries.List.Add(query);
                }

        }

        private Queries _queries;
        public Queries Queries
        {
            get { return _queries; }
            set { SetProperty(ref _queries, value); }
        }

        private string _filter1;
        public string Filter1
        {
            get { return _filter1; }
            set { 
                SetProperty(ref _filter1, value);
                filterlist(Filter1);
            }
        }
        private void filterlist(string value)
        {
            Queries.List.Where(x => x.Name.Equals(value));
        }

    }
}
namespace DataRetrieval.ViewModel
{
公共类QueriesViewModel:BindableBase
{
公共查询视图模型()
{
查询=新查询();
对于(int i=0;i<5;++i)
{
var query=newquery{Name=“query”+i.ToString()};
查询.列表.添加(查询);
}
}
私人查询(u查询),;
公众查询
{
获取{返回_查询;}
set{SetProperty(ref_查询,值);}
}
专用字符串过滤器1;
公共字符串过滤器1
{
获取{return\u filter1;}
集合{
SetProperty(参考过滤器1,值);
过滤器列表(过滤器1);
}
}
私有空过滤器列表(字符串值)
{
其中(x=>x.Name.Equals(value));
}
}
}
型号:

  public class Queries : BindableBase
    {

        private ObservableCollection<Query> _list;
        public ObservableCollection<Query> List
        {
            get { return _list ?? (_list = new ObservableCollection<Query>()); }
            set { SetProperty(ref _list, value); }
        }

    }
    public class Query:BindableBase
    {
        private string _name;
        public string Name
        {
            get { return _name; }
            set { 
                SetProperty(ref _name, value); 
            }
        }
        private string _type;
        public string Type
        {
            get { return _type; }
            set { SetProperty(ref _type, value); }
        }
        private QDatatables _tables;
        public QDatatables Tables
        {
            get { return _tables; }
            set { SetProperty(ref _tables, value); }
        }

    }
公共类查询:BindableBase
{
私有可观察收集列表;
公共可观测收集列表
{
获取{return _list???(_list=newobserveCollection());}
set{SetProperty(ref_list,value);}
}
}
公共类查询:BindableBase
{
私有字符串\u名称;
公共字符串名
{
获取{return\u name;}
集合{
SetProperty(参考名称、值);
}
}
私有字符串_类型;
公共字符串类型
{
获取{return\u type;}
集合{SetProperty(ref _类型,值);}
}
专用QDatatables_表;
公共QDatatables
{
获取{return\u tables;}
set{SetProperty(ref_表,值);}
}
}
querys.List.Where()
返回一个新值,因此要么将其设置回querys.List(正如@Valera在他的评论中所说),要么像这样返回:

Queries.List = Queries.List.Where(x => x.Name.Equals(value));

编辑:返回不起作用,因为它位于void函数中,您必须更改它,或者使用@Valera的方法。

querys.List=newobserveCollection(querys.List.Where(x=>x.Name.Equals(value));
Queries.List = new ObservableCollection<Query>(Queries.List.Where(x => x.Name.Equals(value)));

querys.List=querys.List.Where(x=>x.Name.Equals(value))@ValeraScherbakov我收到以下错误:无法将类型“System.Collections.Generic.IEnumerable”隐式转换为“System.Collections.ObjectModel.ObservableCollection”‌​. 存在显式转换(是否缺少强制转换?)返回语句在这种情况下不合适。因为他调用了“void”函数。@如果我尝试第一个选项,就会出现以下错误:无法将类型“System.Collections.Generic.IEnumerable”隐式转换为“System.Collections.ObjectModel.ObservableCollection”。存在显式转换(您是否缺少演员阵容?@EthanBrouwer谢谢您的回答也很接近。
Queries.List = new ObservableCollection<Query>(Queries.List.Where(x => x.Name.Equals(value)));