可以创建密钥未知的通用搜索方法; 例如,List的Key将被传递给参数,它执行类似搜索并返回已过滤的List.
代码应该是这样的:
public List<T> LikeSearch<T>(List<T> AllData,T key, string searchString)
{
List<T> _list = new List<T>();
//Perform the search on AllData based on searchString passed on the key
//given
return _list;
}
Run Code Online (Sandbox Code Playgroud)
用途如下:
例1
List<Users> _users = LikeSearch<Users>(AllUsers,'Name','sam');
Run Code Online (Sandbox Code Playgroud)
AllUsers100的清单在哪里users.
例2
List<Customers> _cust = LikeSearch<Customers>(AllCustomers,'City','London');
Run Code Online (Sandbox Code Playgroud)
AllCustomers100的清单在哪里Customers.
请sugest
假设key始终引用由任何类型实现的公共属性T,则可以执行以下操作:
public static List<T> LikeSearch<T>(this List<T> data, string key, string searchString)
{
var property = typeof(T).GetProperty(key, BindingFlags.Public | BindingFlags.GetProperty | BindingFlags.Instance);
if (property == null)
throw new ArgumentException($"'{typeof(T).Name}' does not implement a public get property named '{key}'.");
//Equals
return data.Where(d => property.GetValue(d).Equals(searchString)).ToList();
//Contains:
return data.Where(d => ((string)property.GetValue(d)).Contains(searchString)).ToList();
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1354 次 |
| 最近记录: |