<p>Can anyone suggest a good implementation of a generic collection class that implements the <code>IBindingListView</code> &amp; <code>IBindingList</code> interfaces and provides Filtering and Searching capabilities?</p>

<p>I see my current options as:<br /></p>

<ul>
<li>Using a class that someone else has written and tested</li>
<li>Inheriting from <code>BindingList&lt;T&gt;</code>, and implementing the <code>IBindingListView</code> interfaces</li>
<li>Write a custom collection from scratch, implementing <code>IBindingListView</code> and <code>IBindingList</code>.</li>
</ul>

<p>Obviously, the first option is my preferred choice.</p>

[{'answer_id': 29146, 'author': 'Joseph Daigle', 'author_id': 507, 'author_profile': 'https://Stackoverflow.com/users/507', 'pm_score': 1, 'selected': False, 'text': '<p>A couple of solutions I can think of:</p>\n\n<ol>\n<li><p>The <a href="http://subsonicproject.com/" rel="nofollow noreferrer">SubSonic Project </a> has a pretty nice implementation of <code>BindlingList&lt;T&gt;</code> which is open source. Although this might require using the entire SubSonic binary to use their implementation.</p></li>\n<li><p>I enjoy using the classes from the <a href="http://www.codeplex.com/PowerCollections" rel="nofollow noreferrer">Power Collections</a> project. It is fairly simple to inherit from one of the base collections there and implement <code>IBindingListView</code>.</p></li>\n</ol>\n'}, {'answer_id': 165333, 'author': 'Aaron Wagner', 'author_id': 3909, 'author_profile': 'https://Stackoverflow.com/users/3909', 'pm_score': 6, 'selected': True, 'text': '<p>I used and built upon an implementation I found on and old MSDN forum post from a few years ago, but recently I searched around again and found a sourceforge project called <a href="http://blw.sourceforge.net/" rel="noreferrer">BindingListView</a>.  It looks pretty nice, I just haven\'t pulled it in to replace my hacked version yet.  </p>\n\n<p>nuget package: <code>Equin.ApplicationFramework.BindingListView</code></p>\n\n<p>Example code:</p>\n\n<pre><code>var lst = new List&lt;DemoClass&gt;\n{\n    new DemoClass { Prop1 = "a", Prop2 = "b", Prop3 = "c" },\n    new DemoClass { Prop1 = "a", Prop2 = "e", Prop3 = "f" },\n    new DemoClass { Prop1 = "b", Prop2 = "h", Prop3 = "i" },\n    new DemoClass { Prop1 = "b", Prop2 = "k", Prop3 = "l" }\n};\ndataGridView1.DataSource = new BindingListView&lt;DemoClass&gt;(lst);\n// you can now sort by clicking the column headings \n//\n// to filter the view...\nvar view = (BindingListView&lt;DemoClass&gt;)dataGridView1.DataSource;            \nview.ApplyFilter(dc =&gt; dc.Prop1 == "a");\n</code></pre>\n'}, {'answer_id': 2869069, 'author': 'Tun', 'author_id': 188574, 'author_profile': 'https://Stackoverflow.com/users/188574', 'pm_score': 2, 'selected': False, 'text': '<p>Here is the help for your method 2 and 3\nBehind the Scenes: Implementing Filtering for Windows Forms Data Binding</p>\n\n<p><a href="http://www.microsoft.com/downloads/details.aspx?FamilyID=4af0c96d-61d5-4645-8961-b423318541b4&amp;displaylang=en" rel="nofollow noreferrer">http://www.microsoft.com/downloads/details.aspx?FamilyID=4af0c96d-61d5-4645-8961-b423318541b4&amp;displaylang=en</a></p>\n'}]
['https://Stackoverflow.com/questions/29107', 'https://Stackoverflow.com', 'https://Stackoverflow.com/users/708/']