tôi cần phải viết một số phương pháp tìm kiếm chung chung như thế này:C# Generic LINQ Query
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()
}
}
và tôi có một hàm CreateQuery()
rằng nên lọc IEnumerable
đối tượng. Chức năng này sẽ khác đối với tất cả các lớp. Ví dụ:
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;
}
Làm cách nào để triển khai ý tưởng này một cách chính xác?