Programmēšana

Kā izmantot projekcijas C #

Projekcija ir darbība, kas pārveido vaicājuma rezultātus. Varat izmantot projekciju, lai objektu pārveidotu jaunā formā, kurai ir tikai tās lietojumprogrammā nepieciešamās īpašības. Šajā rakstā mēs apskatīsim, kā mēs varam strādāt ar projekcijām C #.

Lai strādātu ar šajā rakstā sniegtajiem kodu piemēriem, sistēmā jābūt instalētai Visual Studio 2019. Ja jums vēl nav kopijas, varat lejupielādēt Visual Studio 2019 šeit.

Visual Studio izveidojiet konsoles lietojumprogrammas projektu

Vispirms izveidosim .NET Core konsoles lietojumprogrammas projektu Visual Studio. Pieņemot, ka Visual Studio 2019 ir instalēta jūsu sistēmā, veiciet tālāk norādītās darbības, lai izveidotu jaunu .NET Core Console lietojumprogrammas projektu Visual Studio.

  1. Palaidiet Visual Studio IDE.
  2. Noklikšķiniet uz “Izveidot jaunu projektu”.
  3. Logā “Izveidot jaunu projektu” parādīto veidņu sarakstā atlasiet “Console App (.NET Core)”.
  4. Noklikšķiniet uz Tālāk.
  5. Nākamajā logā “Konfigurēt jauno projektu” norādiet jaunā projekta nosaukumu un vietu.
  6. Noklikšķiniet uz Izveidot.
  7. Tādējādi Visual Studio 2019 tiks izveidots jauns .NET Core konsoles lietojumprogrammas projekts. Mēs izmantosim šo projektu šī raksta nākamajās sadaļās.

Kas ir projekcija C #?

Projekcija attiecas uz objekta pārveidošanu jaunā formā tā, lai jaunizveidotajā objektā būtu tikai tās īpašības, kuras tiks izmantotas. Valodas integrētais vaicājums (LINQ) nodrošina atbalstu diviem standarta vaicājumu projekcijas operatoriem Select un SelectMany.

Operatorus Select un SelectMany var izmantot, lai projicētu vienu īpašumu vai projicētu vaicājuma rezultātus vai projicētu vairākus rekvizītus no datu avota anonīmā tipā. Vajadzības gadījumā jūs pat varat veikt projekcijas, aprēķinus, filtrēšanu vai citas darbības ar projekciju.

Turpmākajās sadaļās mēs pārbaudīsim, kā mēs varam strādāt ar šiem operatoriem C #.

Projekts, izmantojot atlasiet operatoru C #

Programmā Program.cs ierakstiet šādu kodu.

sabiedrības klase Autors

{

public int Id {get; komplekts; }

publiskā virkne FirstName {get; komplekts; }

publiskā virkne Uzvārds {get; komplekts; }

publiska virkne Adrese {get; komplekts; }

publiskais autors (int id, string firstName,

virknes uzvārds, virknes adrese)

    {

this.Id = id;

this.Vārds = vārds;

this.LastName = uzvārds;

this.Address = adrese;

    }

}

Šis koda fragments parāda, kā varat izmantot operatora Select priekšrocības, lai vaicātu datus.

var autori = jauns saraksts

{

jaunais autors (1, "Joydip", "Kanjilal", "Hyderabad, INDIA"),

jaunais autors (2, "Anand", "Naraswamy", "Cochin, INDIA"),

jauns autors (3, "Steve", "Smith", "Ohio, USA"),

jauns autors (4, "Uday", "Denduluri", "Londona, Lielbritānija")

};

foreach (autora mainīgais nosaukums. Atlasiet (e => e.Vārda Vārds))

{

Console.WriteLine (nosaukums);

}

Izpildot iepriekš minēto koda fragmentu, konsoles logā tiks parādīti visu autoru vārdi.

Projektēt uz anonīmiem veidiem C #

No datu avota var projicēt vairākus īpašumus, jūs varat projektēt arī anonīmu tipu. Šis koda fragments parāda, kā var projicēt vairākus rekvizītus anonīmā tipā.

var dati = autori. Atlasiet (e => new {e.FirstName, e.LastName});

Projekts, izmantojot operatoru SelectMany C #

Varat izmantot operatora SelectMany priekšrocības, lai vaicātu datus no kolekcijas, kas ievieš IEnumerable saskarni. Operatoru SelectMany var izmantot, ja vēlaties vaicāt datus no vairākām kolekcijām un projektēt vai saplacināt tos vienā secībā.

Ņemiet vērā, ka gan Select, gan SelectMany rada rezultātu no avota vērtībām. Kamēr Select no katras avota vērtības rada vienu rezultātu, SelectMany no katras avota vērtības izveido saīsinātu apakškolekciju.

Tagad iekļausim papildu īpašumu autoru klasē ar nosaukumu Subjects. Šis rekvizīts ir virkņu saraksts, kas satur priekšmetu nosaukumus, par kuriem autors raksta grāmatas.

sabiedrības klase Autors

    {

public int Id {get; komplekts; }

publiskā virkne FirstName {get; komplekts; }

publiskā virkne Uzvārds {get; komplekts; }

publiska virkne Adrese {get; komplekts; }

public List Subjects {get; komplekts; }

publiskais autors (int id, string firstName, string lastName,

virknes adrese, saraksta tēmas)

        {

this.Id = id;

this.Vārds = vārds;

this.LastName = uzvārds;

this.Address = adrese;

tas.Priekšmeti = priekšmeti;

        }

    }

Lai izveidotu autoru sarakstu, varat izmantot šo koda fragmentu.

var autori = jauns saraksts

{

jauns autors (1, "Joydip", "Kanjilal", "Hyderabad, INDIA",

jauns saraksts {"C #", "F #"}),

jaunais autors (2, "Anand", "Naraswamy", "Cochin, INDIA",

jauns saraksts {"C #", "VB.NET"}),

jaunais autors (3, "Steve", "Smith", "Ohio, USA",

jauns saraksts {"C #", "C ++"}),

jauns autors (4, "Uday", "Denduluri", "Londona, Lielbritānija",

jauns saraksts {"C #", "VB.NET"}),

jauns autors (5, "Jane", "Barlow", "London, UK",

jauns saraksts {"C #", "C ++"})

 };

Un jūs varat izmantot zemāk esošo koda fragmentu, lai izgūtu to programmēšanas valodu nosaukumus, par kurām autori raksta grāmatas.

var dati = autori.SelectMany (a => a.Priekšmeti) .Distinct ();

foreach (datu subjekts)

{

Console.WriteLine (priekšmets);

}

Izmantojiet operatoru Kur, lai filtrētu rezultātu datus C #

Lai filtrētu rezultātu kopu, pēc SelectMany var lietot operatoru Kur. Izpildot šo koda fragmentu, tiek parādīts tā autora vārds, uzvārds un tēma, kura vārds sākas ar rakstzīmi “J” un atrodas Lielbritānijā.

var dati = autori

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

.SelectMany (a => a. Subjects, (a, Subject) => new {a.FirstName, Subject})

. Kur (n => n.Vārds.Sākt ar ("J"));

foreach (datu autors)

{

Console.WriteLine (autors);

}

Izpildot iepriekš minēto koda fragmentu, konsoles logā jums vajadzētu redzēt izvadi, kā parādīts zemāk redzamajā ekrāna attēlā.

Projekcijas var izmantot, strādājot ar EF Core, tāpēc jūs varat izgūt tikai kolonnas no pamatā esošās datu bāzes, kas nepieciešama jūsu lietojumprogrammai. Nākamajā rakstā šeit es apspriedīšu dažas uzlabotas darbības, izmantojot projekcijas, piemēram, projekcijas viens pret daudziem, rezultātu filtrēšanu un pasūtīšanu.

$config[zx-auto] not found$config[zx-overlay] not found