Gegevenstypen converteren (C#)

Conversiemethoden wijzigen het type invoerobjecten.

Belangrijk

In deze voorbeelden wordt een System.Collections.Generic.IEnumerable<T> gegevensbron gebruikt. Gegevensbronnen die gebaseerd zijn op System.Linq.IQueryProvider maken gebruik van System.Linq.IQueryable<T> gegevensbronnen en expressiebomen. Expressiestructuren hebben beperkingen voor de toegestane C#-syntaxis. Bovendien kan elke IQueryProvider gegevensbron, zoals EF Core , meer beperkingen opleggen. Raadpleeg de documentatie voor uw gegevensbron.

Conversiebewerkingen in LINQ-query's zijn handig in verschillende toepassingen. Hier volgen enkele voorbeelden:

Methoden

De volgende tabel bevat de standaardqueryoperatormethoden waarmee conversies van gegevenstypen worden uitgevoerd.

De conversiemethoden in deze tabel waarvan de namen beginnen met As wijzigen het statische type van de bronverzameling, maar niet opsommen. De methoden waarvan de namen beginnen met 'Aan' inventariseren de bronverzameling en plaatsen de items in het bijbehorende verzamelingstype.

Methodenaam Beschrijving Syntaxis van C#-query-expressie Meer informatie
AsEnumerable Retourneert de invoer die is getypt als IEnumerable<T>. Niet van toepassing. Enumerable.AsEnumerable
AsQueryable Converteert een (algemeen) IEnumerable naar een (algemeen) IQueryable. Niet van toepassing. Queryable.AsQueryable
Rolverdeling Hiermee worden de elementen van een verzameling geconverteerd naar een opgegeven type. Gebruik een expliciet getypte bereikvariabele. Voorbeeld:

from string str in words
Enumerable.Cast

Queryable.Cast
OfType Filtert waarden, afhankelijk van de mogelijkheid om te worden omgezet naar een opgegeven type. Niet van toepassing. Enumerable.OfType

Queryable.OfType
ToArray Converteert een verzameling naar een array. Deze methode dwingt de uitvoering van query's af. Niet van toepassing. Enumerable.ToArray
ToDictionary Hiermee worden elementen geplaatst in een Dictionary<TKey,TValue> op basis van een functie voor sleutelkeuze. Deze methode zorgt ervoor dat query's worden uitgevoerd. Niet van toepassing. Enumerable.ToDictionary
ToList Converteert een verzameling naar een List<T>. Deze methode dwingt de uitvoering van query's af. Niet van toepassing. Enumerable.ToList
ToLookup Hiermee plaatst u elementen in een Lookup<TKey,TElement> (een-op-veel-woordenboek) op basis van een sleutelselectiefunctie. Deze methode dwingt de uitvoering van query's af. Niet van toepassing. Enumerable.ToLookup

Notitie

In de volgende voorbeelden in dit artikel worden de algemene gegevensbronnen voor dit gebied gebruikt.
Elk Student heeft een cijferniveau, een primaire afdeling en een reeks scores. Een Teacher heeft ook een City eigenschap die de campus identificeert waar de docent klassen heeft. A Department heeft een naam en een verwijzing naar een Teacher persoon die als afdelingshoofd fungeert.
U vindt de voorbeeldgegevensset in de bronopslagplaats.

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; }
}

Notitie

Raadpleeg de veelvoorkomende gegevensbronnen voor dit gebied in het artikel Overzicht van Standaardqueryoperators.

Voorbeeld van syntaxis van queryexpressie

In het volgende codevoorbeeld wordt een expliciet getypte bereikvariabele gebruikt om een type naar een subtype te casten voordat u toegang krijgt tot een lid dat alleen beschikbaar is voor het subtype.

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);
}

De equivalente query kan worden uitgedrukt met behulp van methodesyntaxis, zoals wordt weergegeven in het volgende voorbeeld:

IEnumerable people = students;

var query = people
    .Cast<Student>()
    .Where(student => student.Year == GradeLevel.ThirdYear);

foreach (Student student in query)
{
    Console.WriteLine(student.FirstName);
}

Zie ook