Programavimas

Kaip naudoti projekcijas C #

Projekcija yra operacija, transformuojanti užklausos rezultatus. Galite naudoti projekciją norėdami transformuoti objektą į naują formą, turinčią tik tas jūsų programai reikalingas ypatybes. Šiame straipsnyje mes apžvelgsime, kaip mes galime dirbti su projekcijomis C #.

Norėdami dirbti su šiame straipsnyje pateiktais kodų pavyzdžiais, sistemoje turite būti įdiegę „Visual Studio 2019“. Jei dar neturite kopijos, galite atsisiųsti „Visual Studio 2019“ čia.

„Visual Studio“ sukurkite konsolės programos projektą

Pirmiausia sukurkime .NET Core konsolės programos projektą „Visual Studio“. Darant prielaidą, kad „Visual Studio 2019“ yra įdiegta jūsų sistemoje, atlikite toliau nurodytus veiksmus, kad sukurtumėte naują „.NET Core Console“ programos projektą „Visual Studio“.

  1. Paleiskite „Visual Studio IDE“.
  2. Spustelėkite „Sukurti naują projektą“.
  3. Lange „Kurti naują projektą“ iš rodomų šablonų sąrašo pasirinkite „Console App (.NET Core)“.
  4. Spustelėkite Pirmyn.
  5. Tada rodomame lange „Konfigūruoti naują projektą“ nurodykite naujo projekto pavadinimą ir vietą.
  6. Spustelėkite Sukurti.
  7. Tai sukurs naują „.NET Core“ konsolės programos projektą „Visual Studio 2019“. Šį projektą naudosime tolesniuose šio straipsnio skyriuose.

Kas yra projekcija C #?

Projekcija reiškia objekto transformavimą į naują formą taip, kad naujai sukurtame objekte būtų tik tos savybės, kurios bus naudojamos. Kalbų integruota užklausa (LINQ) teikia paramą dviem standartiniams užklausų projekcijos operatoriams „Select“ ir „SelectMany“.

Operatorius „Select“ ir „SelectMany“ galite naudoti norėdami projektuoti vieną ypatybę arba projektuoti užklausos rezultatus arba projektuoti kelias ypatybes iš duomenų šaltinio į anoniminius tipus. Jei reikia, netgi galite atlikti projekcijas skaičiavimais, filtravimu ar bet kokiomis kitomis operacijomis.

Tolesniuose skyriuose mes išnagrinėsime, kaip galime dirbti su šiais operatoriais C #.

Projektas naudojant operatorių Pasirinkti C #

Įrašykite šį kodą į failą Program.cs.

visuomenės klasės Autorius

{

public int Id {get; rinkinys; }

public string FirstName {get; rinkinys; }

vieša eilutė Pavardė {get; rinkinys; }

viešoji eilutė Adresas {get; rinkinys; }

public Author (int id, string firstName,

eilutės pavardė, eilutės adresas)

    {

tai.Id = id;

tai.Vardas = vardas;

this.Pavardė = pavardė;

tai.adresas = adresas;

    }

}

Šis kodo fragmentas parodo, kaip galite pasinaudoti „Select“ operatoriaus pranašumais, jei norite pateikti užklausą.

var autoriai = naujas sąrašas

{

naujasis autorius (1, „Joydip“, „Kanjilal“, „Hyderabad, INDIA“),

naujasis autorius (2, "Anand", "Naraswamy", "Cochin, INDIA"),

naujasis autorius (3, „Steve“, „Smith“, „Ohio, USA“),

naujas autorius (4, „Uday“, „Denduluri“, „London, UK“)

};

foreach (kintamasis vardas autoriuose. Pasirinkite (e => e.FirstName))

{

Console.WriteLine (vardas);

}

Kai vykdysite aukščiau pateiktą kodo fragmentą, konsolės lange bus rodomi visų autorių vardai.

Projektuokite anoniminius tipus C #

Galite projektuoti daugiau nei vieną nuosavybę iš duomenų šaltinio, taip pat galite projektuoti ir anoniminį tipą. Šis kodo fragmentas parodo, kaip galite projektuoti kelias ypatybes į anoniminius tipus.

var duomenys = autoriai. Pasirinkite (e => new {e.FirstName, e.LastName});

Projektas naudojant „SelectMany“ operatorių C #

Galite pasinaudoti „SelectMany“ operatoriaus pranašumais ir pateikti užklausą duomenims iš kolekcijos, įgyvendinančios „IEnumerable“ sąsają. Operatorių „SelectMany“ galite naudoti, kai norite pateikti užklausą dėl kelių kolekcijų duomenų ir juos projektuoti arba suplakti į vieną seką.

Atminkite, kad tiek „Select“, tiek „SelectMany“ sukuria rezultatą iš šaltinio verčių. Nors „Select“ sukuria po vieną rezultatą iš kiekvienos šaltinio vertės, „SelectMany“ iš kiekvienos šaltinio vertės sukuria sujungtą antrinį rinkinį.

Dabar įtraukime papildomą ypatybę į „Autorių“ klasę pavadinimu „Subjektai“. Ši savybė yra eilučių, kuriose yra dalykų, apie kuriuos autorius rašo knygas, pavadinimai.

visuomenės klasės Autorius

    {

public int Id {get; rinkinys; }

public string FirstName {get; rinkinys; }

vieša eilutė Pavardė {get; rinkinys; }

viešoji eilutė Adresas {get; rinkinys; }

public Subjektų sąrašas {get; rinkinys; }

public Author (int id, string firstName, string lastName,

eilutės adresas, temų sąrašas)

        {

tai.Id = id;

tai.Vardas = vardas;

this.Pavardė = pavardė;

tai.adresas = adresas;

tai.Temos = tiriamieji;

        }

    }

Norėdami sukurti autorių sąrašą, galite naudoti šį kodo fragmentą.

var autoriai = naujas sąrašas

{

naujasis autorius (1, „Joydip“, „Kanjilal“, „Hyderabad, INDIA“,

naujas sąrašas {"C #", "F #"}),

naujasis autorius (2, "Anand", "Naraswamy", "Cochin, INDIA",

naujas sąrašas {"C #", "VB.NET"}),

naujasis autorius (3, „Steve“, „Smith“, „Ohio, USA“,

naujas sąrašas {"C #", "C ++"}),

naujas autorius (4, „Uday“, „Denduluri“, „London, UK“,

naujas sąrašas {"C #", "VB.NET"}),

naujasis autorius (5, „Jane“, „Barlow“, „London, UK“,

naujas sąrašas {"C #", "C ++"})

 };

Galite naudoti toliau pateiktą kodo fragmentą, norėdami gauti programavimo kalbų, apie kurias autoriai rašo knygas, pavadinimus.

var duomenys = autoriai. Pasirinkite Daug (a => a. Dalykai). Skirtumas ();

foreach (duomenų subjektas)

{

Console.WriteLine (tema);

}

Naudokite operatorių Kur filtruoti rezultatų duomenis C #

Norėdami filtruoti rezultatų rinkinį, galite naudoti operatorių Kur po „SelectMany“. Vykdant šį kodo fragmentą bus rodomas autoriaus, kurio vardas prasideda simboliu „J“ ir gyvena JK, vardas ir tema.

var duomenys = autoriai

.Kur (a => a.Address.IndexOf ("UK")> = 0)

. Pasirinkite Daug (a => a. Temos, (a, Tema) => naujas {a. Vardas, Tema})

.Kur (n => n.Vardas.Pradedama Su ("J"));

foreach (duomenų autorius)

{

Console.WriteLine (autorius);

}

Vykdydami pirmiau pateiktą kodo fragmentą, konsolės lange turėtumėte pamatyti išvestį, kaip parodyta žemiau esančiame ekrano paveikslėlyje.

Projekcijos gali būti naudojamos dirbant su „EF Core“, todėl galite gauti tik stulpelius iš pagrindinės duomenų bazės, kurios reikia jūsų programai. Čia būsimame straipsnyje aptarsiu keletą išplėstinių operacijų, naudodamas projekcijas, tokias kaip projekcijos „vienas prieš daug“, rezultatų filtravimas ir tvarkymas.