मुझे एक अजीब समस्या का सामना करना पड़ा है। यहां मैंने समस्या का पुनरुत्पादन किया।IENumerable दोहराने का कार्य
Random r = new Random();
List<int> x = new List<int> {1, 2, 3, 4, 5, 6};
var e = x.OrderBy(i => r.Next());
var list1 = e.ToList();
var list2 = e.ToList();
bool b = list1.SequenceEqual(list2);
Console.WriteLine(b); // prints false
अब तक, मैंने सोचा था कि जब लिंक कहा जाता है तो लिंक कार्य निष्पादित हो जाते हैं। लेकिन, इस विधि में ऐसा लगता है कि मैं ToList
पर कॉल करता हूं, लिंक फ़ंक्शन OrderBy
फिर से निष्पादित करता है। ऐसा क्यों हैं?
देखें [क्वेरी निष्पादन] (https://msdn.microsoft.com/en-us/library/vstudio/bb738633 (v = vs.100) .aspx): "क्वेरी चर के दौरान LINQ क्वेरी हमेशा निष्पादित की जाती हैं क्वेरी वैरिएबल बनाया गया है, जब नहीं। इसे स्थगित निष्पादन कहा जाता है। " –
@Idle_Mind आपको यह जोड़ना चाहिए कि यह * स्थगित निष्पादन के लिए प्रलेखन है। * प्रत्येक LINQ विधि पुनरावृत्ति समय पर निष्पादित नहीं होती है। –