내가이 된 IQueryable에 ORDERBY을한다 ... 사람이 내게 줄 정말 도움이되었다 확장 방법이 ...하지만 난 (비 제네릭)IQueryable (일반) : 누락 및 건너 뛰기? 그것은 된 IQueryable 작동 <T>
정상적인 된 IQueryable을 할 하나를 원했다 여기에 코드, 카운트 및 건너 뛰기가 있으며 테이크가 누락 된 것 같습니다.
public static IQueryable GetPage(this IQueryable query,
int page, int pageSize, out int count)
{
int skip = (int)((page - 1) * pageSize);
count = query.Count(); //COUNT DOESN'T EXIST
return query.Skip(skip).Take((int)pageSize); // NEITHER SKIP
}
여기는 완벽하게 오류없이 작동합니다.
public static IQueryable<T> GetPage<T>(this IQueryable<T> query,
int page, int pageSize, out int count)
{
int skip = (int)((page - 1) * pageSize);
count = query.Count();
return query.Skip(skip).Take((int)pageSize);
}
어떤 아이디어가이 문제를 해결할 수 있습니까? 내 반환 형식을 완벽하게 작동하고 ToDataTable이라는 또 다른 확장 메서드가 있고 또한 일반 범용 IQueryable에서 함수를 변경하고 싶지 않습니다.
해결 방법이 있습니까? 사전에
감사
편집
나는 기존에 IQueryable
IQueryable<Client> gen = null;
IQueryable nongen = null;
var test = gen.GetPage(); //COMPILES!
var test 1 = non.GetPage(); // Doesn't compile because GETPAGE
// for non generic is broken as it has
// invalid methods like COUNT and SKIP etc.
나는 GetPage이 아닌 일반 버전을 제거하려고하지만 내 비 일반에 IQueryable은 '아무튼에 지금과 같이 호출 픽업은 Iqueryable이 아니라 IQueryable만으로 확장됩니다.
Thanks JOn! 당신은 C# 4.0 상태 - 3.5를 사용하고 있습니다. 그래서 3.5에서 표준 반사를 사용할 수 있습니까 ?? 나는 추정한다? – Martin
@ Martin : 네. 당신은 구체적인 유형의'query'를 얻고 그것이 구현하는 인터페이스를 찾아야합니다 ... 그것을 통해'T'를 찾아낸 다음'MethodInfo.MakeGenericMethod'를 사용하여'Queryable.Count' 등을 호출해야합니다. 매우 지저분 해지다. –
예! 오 잘 생각을 가질거야 :-) 확인을위한 감사합니다. – Martin