मैं एक विस्तार विधि है जो एक व्यक्ति वास्तव में मुझे देने के लिए मददगार था है ... यह IQueryable पर एक orderby है ... लेकिन मैं एक सामान्य IQueryable (गैर सामान्य)IQueryable (गैर सामान्य): गुम गणना और छोड़ें? यह IQueryable के साथ काम करता <T>
करने के लिए एक चाहते थे यहां कोड है, गिनती और छोड़ें और मुझे लगता है कि टेक गायब हैं।
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
धन्यवाद जॉइन! आप सी # 4.0 बताते हैं - मैं 3.5 का उपयोग कर रहा हूं .. तो मैं 3.5 में मानक प्रतिबिंब का उपयोग कर सकता हूं ?? मैं आशा करता हूँ? – Martin
@ मार्टिन: हाँ। आपको कंक्रीट प्रकार का 'क्वेरी' प्राप्त करना होगा और यह पता लगाना होगा कि यह कौन सा इंटरफेस लागू करता है ... उस के माध्यम से' टी 'ढूंढें, फिर' Queryable.Count' 'कॉल करने के लिए 'MethodInfo.MakeGenericMethod' का उपयोग करें। इसकी संभावना है बहुत जल्दी गन्दा हो जाओ। –
हां !! ओह अच्छी तरह से सोचने वाला होगा ... :-) पुष्टि के लिए धन्यवाद। – Martin