4

私はC#のwin-formアプリに取り組んでいます。

私のフォームでは、Binding-Source とバインドする Data-Grid-View があり、Binding-Source データソースはエンティティ フレームワークのテーブルです。

エンティティ フレームワークを使用する場合、バインディング ソースのフィルターとデータ グリッド ビューの列による並べ替えは使用できませんが、エンティティ フレームワークを使用しない場合はそれらを使用できます。エンティティフレームワークでそれらを使用するにはどうすればよいですか?

フォームが読み込まれるときの私のコードは

contex = new myEntity();
myBindingSource.DataSource = contex.myTable;
4

2 に答える 2

4

すべての BindingSource には、プロパティSupportsFiltering (およびSupportsSorting ) があります。entitySet を DataSource として設定すると、これら 2 つのプロパティは自動的にfalseに設定されます。したがって、いくつかの可能な解決策があります。ここIEnumberable<T>に示すように拡張メソッドを提供するか、 を使用してフィルタリング/ソートすることを選択します。Linq2Entities

Linq2Entitiesのスニペットは次のようになります。

myEntity context = new myEntity();
myBindingSource.DataSource = (from m in context.myTable
                              where m.PROPERTY MEETS CONDITION
                              select m).ToList<TYPE>();

拡張メソッドのスニペット:

// extension method
public static IEnumerable<T> Filter<T>(this IEnumerable<T> list, Func<T, bool> filterParam) {
        return list.Where(filterParam);
}

// filtering example
context.myTable.Filter(x => x.ItemName.StartsWith("Test"))

さらに、この主題は、ここでもSOで何度も議論されてきました。

于 2012-08-25T20:20:43.637 に答える
0

エンティティ フレームワークにタグを付けましたが、モデルを表示しませんでした。MyEntity が ObjectContext または DBContext であると仮定すると、並べ替えをサポートする監視可能なコレクションである DbSetのローカル プロパティにバインドできます。

myBindingSource.DataSource = contex.myTable.Local;
于 2012-08-25T20:42:07.780 に答える