c# – 可以创建密钥未知的通用搜索方法

可以创建密钥未知的通用搜索方法;例如,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;
}

用途如下:

例1

List<Users> _users = LikeSearch<Users>(AllUsers,'Name','sam');

AllUsers是100个用户的列表.

例2

List<Customers> _cust = LikeSearch<Customers>(AllCustomers,'City','London');

AllCustomers是100个客户的列表.

请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();
}

转载注明原文:c# – 可以创建密钥未知的通用搜索方法 - 代码日志