0

似乎只有DataSetDataTableDataView可以在您想使用时用作源BindingSource.Find。我将IQueryableIEnumerable绑定到我的绑定源,但非常希望享受该BindingSource.Find方法的“便利性”,而无需自己编写大量代码,因为时间至关重要。

有谁知道现有的实现,或者至少详细的“如何”文章可以帮助我实现这一目标?

4

1 回答 1

0

您可以使用Type.GetPropertyArray.FindIndex方法来创建简洁的扩展方法。

public static int Find<T>(this IEnumerable<T> items, string propertyName, Object key)
{
    PropertyInfo property = typeof(T).GetProperty(propertyName);
    if(property == null)
    {
        throw new ArgumentException(String.Format("Type {0} contains no property named \"{1}\". ",
                                    typeof(T).Name, propertyName), "propertyName");
    }
    return Array.FindIndex(items.ToArray(), i => Object.Equals(property.GetValue(i, null), key));       
}
于 2012-09-27T13:29:10.240 回答