Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Bu makalede, ertelenen yürütme ve gecikmeli değerlendirmenin LINQ to XML sorgularınızın yürütülmesini nasıl etkilediği gösterilmektedir.
Örnek: Yürütmeyi geciktirmek için uzantı yönteminde yield return
yapısını kullanın
Aşağıdaki örnek, ertelenmiş yürütme kullanan bir uzantı yöntemi kullanılırken yürütme sırasını gösterir. Örnek üç dizeden oluşan bir dizi bildirir. Ardından ConvertCollectionToUpperCase
tarafından döndürülen koleksiyon üzerinde yinelenir.
public static class LocalExtensions
{
public static IEnumerable<string>
ConvertCollectionToUpperCase(this IEnumerable<string> source)
{
foreach (string str in source)
{
Console.WriteLine("ToUpper: source {0}", str);
yield return str.ToUpper();
}
}
}
class Program
{
static void Main(string[] args)
{
string[] stringArray = { "abc", "def", "ghi" };
var q = from str in stringArray.ConvertCollectionToUpperCase()
select str;
foreach (string str in q)
Console.WriteLine("Main: str {0}", str);
}
}
Imports System.Runtime.CompilerServices
Module Module1
<Extension()>
Private Iterator Function ConvertCollectionToUpperCase(
ByVal source As IEnumerable(Of String)) _
As IEnumerable(Of String)
For Each str As String In source
Console.WriteLine("ToUpper: source {0}", str)
Yield str.ToUpper()
Next
End Function
Sub Main()
Dim stringArray = New String() {"abc", "def", "ghi"}
Dim q = From str In stringArray.ConvertCollectionToUpperCase()
Select str
For Each Str As String In q
Console.WriteLine("Main: str {0}", Str)
Next
End Sub
End Module
Bu örnek aşağıdaki çıkışı oluşturur:
ToUpper: source abc
Main: str ABC
ToUpper: source def
Main: str DEF
ToUpper: source ghi
Main: str GHI
ConvertCollectionToUpperCase
tarafından döndürülen koleksiyonda yinelenirken, her öğenin kaynak dize dizisinden alınıp büyük harflere dönüştürüldüğüne ve sonraki öğenin kaynak dize dizisinden alınmadan önce bu işlemin gerçekleştiğine dikkat edin.
foreach
içindeki döngüde döndürülen koleksiyondaki her öğe işlenmeden önce, dizelerin tamamının büyük harfe dönüştürülmediğini görebilirsiniz.