मैं IEnumerable के लिए दो एक्सटेंशन मिल गया है:एक्सटेंशन IEnumerable सामान्य
public static class IEnumerableGenericExtensions
{
public static IEnumerable<IEnumerable<T>> InSetsOf<T>(this IEnumerable<T> source, int max)
{
List<T> toReturn = new List<T>(max);
foreach (var item in source)
{
toReturn.Add(item);
if (toReturn.Count == max)
{
yield return toReturn;
toReturn = new List<T>(max);
}
}
if (toReturn.Any())
{
yield return toReturn;
}
}
public static int IndexOf<T>(this IEnumerable<T> source, Predicate<T> searchPredicate)
{
int i = 0;
foreach (var item in source)
if (searchPredicate(item))
return i;
else
i++;
return -1;
}
}
तब मैं इस कोड को लिखें:
Pages = history.InSetsOf<Message>(500);
var index = Pages.IndexOf(x => x == Pages.ElementAt(0));
जहां सार्वजनिक वर्ग इतिहास: IEnumerable लेकिन एक परिणाम के रूप में मैं मुझे उम्मीद है कि '0' नहीं है, लेकिन '-1'। मैं समझ नहीं पा रहा हूं - ऐसा क्यों?
बहुत बहुत धन्यवाद! मैं इस LINQ विशिष्टता के बारे में पूरी तरह से भूल गया हूँ। – Seekeer
@ सेकरियर - कोई समस्या नहीं, मदद करने में खुश! यह एक बुरा मुद्दा है - ऐसी गलतियों को करना आसान है। सबसे बुरा हिस्सा तब होता है जब आप * एक बग नहीं देखते हैं, लेकिन कोड अच्छी तरह से काम करता प्रतीत होता है, लेकिन वास्तव में बहुत धीमी है। (बग से अलग, यहां 'टोलिस्ट' के साथ या बिना जटिलता में एक बड़ा अंतर है) – Kobi
हाँ, मैं लोगों को समझना शुरू कर रहा हूं, जो LINQ पसंद नहीं करते हैं। वैसे, क्या आप LINQ क्वेरी दक्षता और अनुकूलित करने पर किसी भी अच्छे आलेख/पुस्तक की अनुशंसा कर सकते हैं? – Seekeer