C#扩展方法来过滤列表

时间:2013-04-04 06:04:25

标签: linq c#-4.0 extension-methods

我找到了以下扩展方法来过滤列表。我对此很新,因此我想检查是否有人可以帮助我。此方法比较精确值但我想使用包含而不是精确比较。任何想法

    public static IEnumerable<T> FilterByProperty<T>(this IEnumerable<T> source,string property,object value)
    {
        var propertyInfo = typeof(T).GetProperty(property);
        return source.Where(p => propertyInfo.GetValue(p, null) == value);
    }

1 个答案:

答案 0 :(得分:0)

如果您想将等号==更改为Contains。试试这个:

public static IEnumerable<T> FilterByProperty<T>(this IEnumerable<T> source,string property,object value)
    {
        var propertyInfo = typeof(T).GetProperty(property);
        return source.Where(p => propertyInfo
                                      .GetValue(p, null)
                                      .ToString() //be aware that this might be null
                                      .Contains(value));
    }