【发布时间】:2019-11-18 20:17:05
【问题描述】:
我有一个对象列表,其中包含一些属性,例如“姓名”“姓氏”等...
在 Windows 窗体应用程序中,我放置了两个文本框,一个用于姓名,一个用于姓氏,当用户在这些文本框中写入内容时,代码应根据用户所写的内容过滤列表。
//Let assume that the customer object has two props...name and surname and we have an object called Customers with a long list
List<customer> CustomersFiltered = new List<customer>();
CustomersFiltered = Customers.FindAll((x => x.Name.ToLower().StartsWith(txtName.Text.ToLower())).ToList();
CustomersFiltered = CustomersFiltered.FindAll((x => x.Surname.ToLower().StartsWith(txtSurname.Text.ToLower())).ToList();
//make something amazing withe the CustomersFiltered object
此代码功能很好,但仅在用户输入姓名或姓氏的首字母时才过滤。我需要的是如果用户写“g??fy”过滤器必须返回“goofy”但也“gaffy”等等,如果用户写“g*y”过滤器必须返回“goofy”,“ gaaaaaaaaaaaaaaaafy”,“gngiongiwngiowngwfy”。如何使用 Linq 实现这一目标?
【问题讨论】:
-
看看这个thread 你可以在 Linq 方法中使用
Regex.IsMatch()
标签: c# string linq string-matching