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.
Dönüştürme yöntemleri, giriş nesnelerinin türünü değiştirir.
Önemli
Bu örnekler bir System.Collections.Generic.IEnumerable<T> veri kaynağı kullanır. Veri kaynaklarını ve System.Linq.IQueryProviderkullanan System.Linq.IQueryable<T> veri kaynakları. İfade ağaçlarının izin verilen C# söz diziminde sınırlamaları vardır. Ayrıca EF CoreIQueryProviderher veri kaynağı daha fazla kısıtlama uygulayabilir. Veri kaynağınızın belgelerine bakın.
LINQ sorgularındaki dönüştürme işlemleri çeşitli uygulamalarda kullanışlıdır. Aşağıda bazı örnekler verilmiştir:
- yöntemi, Enumerable.AsEnumerable bir türün standart sorgu işlecinin özel uygulamasını gizlemek için kullanılabilir.
- yöntemi, Enumerable.OfType LINQ sorgulaması için parametrelenmemiş koleksiyonları etkinleştirmek için kullanılabilir.
- Enumerable.ToArray, Enumerable.ToDictionary, Enumerable.ToListve Enumerable.ToLookup yöntemleri, sorgu numaralandırılana kadar ertelemek yerine anında sorgu yürütmeyi zorlamak için kullanılabilir.
Yöntemler
Aşağıdaki tabloda, veri türü dönüştürmeleri gerçekleştiren standart sorgu işleç yöntemleri listelemektedir.
Adları "Farklı" ile başlayan bu tablodaki dönüştürme yöntemleri, kaynak koleksiyonun statik türünü değiştirir ancak numaralandırmaz. Adları "Kime" ile başlayan yöntemler kaynak koleksiyonu numaralandırır ve öğeleri ilgili koleksiyon türüne koyar.
| Yöntem Adı | Açıklama | C# Sorgu İfadesi Söz Dizimi | Daha Fazla Bilgi |
|---|---|---|---|
| AsEnumerable | olarak IEnumerable<T>yazılan girişi döndürür. | Uygulanamaz. | Enumerable.AsEnumerable |
| AsQueryable | Bir (genel) öğesini (genel) IEnumerableIQueryableöğesine dönüştürür. | Uygulanamaz. | Queryable.AsQueryable |
| Oyuncu Kadrosu | Bir koleksiyonun öğelerini belirtilen bir türe yayınlar. | Açıkça yazılan bir aralık değişkeni kullanın. Örneğin:from string str in words |
Enumerable.Cast Queryable.Cast |
| OfType | Değerleri, belirtilen türe atanma yeteneklerine bağlı olarak filtreler. | Uygulanamaz. | Enumerable.OfType Queryable.OfType |
| ToArray | Bir koleksiyonu diziye dönüştürür. Bu yöntem sorgu yürütmeyi zorlar. | Uygulanamaz. | Enumerable.ToArray |
| ToDictionary | Öğeleri bir Dictionary<TKey,TValue> anahtar seçici işlevine yerleştirir. Bu yöntem sorgu yürütmeyi zorlar. | Uygulanamaz. | Enumerable.ToDictionary |
| ToList | Bir koleksiyonu öğesine List<T>dönüştürür. Bu yöntem sorgu yürütmeyi zorlar. | Uygulanamaz. | Enumerable.ToList |
| ToLookup | Öğeleri bir anahtar seçici işlevine göre bire Lookup<TKey,TElement> çok sözlüğe yerleştirir. Bu yöntem sorgu yürütmeyi zorlar. | Uygulanamaz. | Enumerable.ToLookup |
Not
Bu makaledeki aşağıdaki örneklerde bu alan için ortak veri kaynakları kullanılır.
Her Student birinin bir not düzeyi, bir birincil bölüm ve bir dizi puanı vardır. Ayrıca, Teacher öğretmenin ders aldığı kampüsü tanımlayan bir City özelliği de vardır. A'nın Department bir adı ve bölüm başkanı olarak görev yapan bir Teacher kişi için bir referansı vardır.
Örnek veri kümesini kaynak depoda bulabilirsiniz.
public enum GradeLevel
{
FirstYear = 1,
SecondYear,
ThirdYear,
FourthYear
};
public class Student
{
public required string FirstName { get; init; }
public required string LastName { get; init; }
public required int ID { get; init; }
public required GradeLevel Year { get; init; }
public required List<int> Scores { get; init; }
public required int DepartmentID { get; init; }
}
public class Teacher
{
public required string First { get; init; }
public required string Last { get; init; }
public required int ID { get; init; }
public required string City { get; init; }
}
public class Department
{
public required string Name { get; init; }
public int ID { get; init; }
public required int TeacherID { get; init; }
}
Not
Standart Sorgu İşleçlerine Genel Bakış makalesinde bu alanın ortak veri kaynaklarına bakabilirsiniz.
Sorgu İfadesi Söz Dizimi Örneği
Aşağıdaki kod örneği, yalnızca alt tür üzerinde kullanılabilen bir üyeye erişmeden önce bir türü alt türe yazmak için açıkça yazılmış bir aralık değişkeni kullanır.
IEnumerable people = students;
var query = from Student student in people
where student.Year == GradeLevel.ThirdYear
select student;
foreach (Student student in query)
{
Console.WriteLine(student.FirstName);
}
Eşdeğer sorgu, aşağıdaki örnekte gösterildiği gibi yöntem söz dizimi kullanılarak ifade edilebilir:
IEnumerable people = students;
var query = people
.Cast<Student>()
.Where(student => student.Year == GradeLevel.ThirdYear);
foreach (Student student in query)
{
Console.WriteLine(student.FirstName);
}