Megjegyzés
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhat bejelentkezni vagy módosítani a címtárat.
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhatja módosítani a címtárat.
A konvertálási módszerek megváltoztatják a bemeneti objektumok típusát.
Fontos
Ezek a minták adatforrást System.Collections.Generic.IEnumerable<T> használnak. Az System.Linq.IQueryProvider-alapú adatforrások System.Linq.IQueryable<T> adatokforrásokat és kifejezésfákat használnak. A kifejezésfák korlátozottan használhatják az engedélyezett C# szintaxist. Emellett minden adatforrás IQueryProvider , például az EF Core további korlátozásokat is alkalmazhat. Ellenőrizze az adatforrás dokumentációját.
A LINQ-lekérdezések konverziós műveletei különböző alkalmazásokban hasznosak. Az alábbiakban néhány példát mutatunk be:
- A Enumerable.AsEnumerable metódussal elrejthető egy szabványos lekérdezési operátor egyéni implementációja.
- A Enumerable.OfType metódussal nem paraméteres gyűjteményeket engedélyezhet a LINQ-lekérdezésekhez.
- A Enumerable.ToArray, Enumerable.ToDictionary, Enumerable.ToList és Enumerable.ToLookup metódusokkal azonnali lekérdezésvégrehajtást kényszeríthet, ahelyett hogy elhalasztanák, amíg a lekérdezést fel nem sorolják.
Metódusok
Az alábbi táblázat az adattípus-átalakításokat végző szabványos lekérdezési operátori metódusokat sorolja fel.
A táblázatban szereplő konverziós metódusok, amelyeknek a neve "As" néven kezdődik, megváltoztatják a forrásgyűjtemény statikus típusát, de nem számbavételt. Azok a metódusok, amelyeknek a neve a "To" kezdetű, számba adja a forrásgyűjteményt, és az elemeket a megfelelő gyűjteménytípusba helyezi.
| Eljárás neve | Leírás | C# lekérdezési kifejezés szintaxisa | További információ |
|---|---|---|---|
| AsEnumerable | A beírt értéket adja eredményül IEnumerable<T>. | Nem alkalmazható. | Enumerable.AsEnumerable |
| AsQueryable | általános IEnumerable -t konvertál általános IQueryable-vé. | Nem alkalmazható. | Queryable.AsQueryable |
| Öntvény | Egy gyűjtemény elemeit egy megadott típusra veti. | Használjon explicit módon beírt tartományváltozót. Példa:from string str in words |
Enumerable.Cast Queryable.Cast |
| OfType | Az értékeket attól függően szűri, hogy egy adott típusba szeretnének-e beszűkíteni őket. | Nem alkalmazható. | Enumerable.OfType Queryable.OfType |
| ToArray | Gyűjteményt tömbbé alakít át. Ez a metódus kényszeríti a lekérdezés végrehajtását. | Nem alkalmazható. | Enumerable.ToArray |
| ToDictionary | Elemeket helyez el egy Dictionary<TKey,TValue> kulcsválasztó függvény alapján. Ez a metódus kényszeríti a lekérdezés végrehajtását. | Nem alkalmazható. | Enumerable.ToDictionary |
| ToList | Gyűjteményt List<T>konvertál . Ez a metódus kényszeríti a lekérdezés végrehajtását. | Nem alkalmazható. | Enumerable.ToList |
| ToLookup | Elemeket helyez egy Lookup<TKey,TElement> (egy-a-többhöz) szótárba egy kulcsválasztó függvény alapján. Ez a metódus kényszeríti a lekérdezés végrehajtását. | Nem alkalmazható. | Enumerable.ToLookup |
Megjegyzés
A cikkben szereplő alábbi példák a terület közös adatforrásait használják.
Mindegyiknek Student van egy osztályszintje, egy elsődleges tanszéke és egy sor pontszáma. A Teacher elemnek is van egy City tulajdonsága, amely azonosítja azt a campust, ahol a tanár órákat tart. A Department nevet visel, és egy Teacher-ra van hivatkozással, aki az osztályvezető.
A mintaadatkészlet a forrásadattárban található.
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; }
}
Megjegyzés
A terület gyakori adatforrásai a Standard lekérdezési operátorok áttekintése című cikkben találhatóak.
Példa lekérdezési kifejezés szintaxisára
Az alábbi kód példa egy explicit módon beírt tartományváltozót használ egy típus altípusba való beírásához, mielőtt hozzáfér egy olyan taghoz, amely csak az altípuson érhető el.
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);
}
Az egyenértékű lekérdezés a következő példában látható metódusszintaxissal fejezhető ki:
IEnumerable people = students;
var query = people
.Cast<Student>()
.Where(student => student.Year == GradeLevel.ThirdYear);
foreach (Student student in query)
{
Console.WriteLine(student.FirstName);
}