は、私はこのようないくつかの一般的な検索方法記述する必要があります。C#ジェネリックのLINQクエリ
public List<T> Search<T>(SearchParamsBase searchParams)
{
using (var context = new TestEntities())
{
var dataType = TypeMap.Get(typeof (T));
var dataSet = context.Set(dataType);
var searchQuery = CreateQuery((IEnumerable<object>) dataSet), searchParams)
return searchQuery.ToList()
}
}
を、私はIEnumerable
オブジェクトをフィルタ処理する必要がある関数CreateQuery()
を持っています。 この機能は、すべてのクラスで異なります。例:
CreateQuery(IEnumerable<object> collection, SearchParamsBase searchParams)
{
var search = (SomeSearchImplementation)searchParams;
// filter
collection = collection.Where(x => x.Name == search.Name);
// select page
collection = collection.Skip(search.Page * search.CountPerPage);
collection = collection.Take(search.CountPerPage);
// order by and so on
// ...
return collection;
}
このアイデアは正しく実装できますか?