Ohjelmointi

Kuinka käyttää ennusteita C #: ssä

Projektio on operaatio, joka muuntaa kyselyn tulokset. Projektion avulla voit muuntaa objektin uudeksi muodoksi, jolla on vain sovelluksessasi tarvittavat ominaisuudet. Tässä artikkelissa tarkastellaan, miten voimme työskennellä projektioiden kanssa C #: ssä.

Jotta voit työskennellä tässä artikkelissa annettujen koodiesimerkkien kanssa, järjestelmässäsi on oltava asennettuna Visual Studio 2019. Jos sinulla ei vielä ole kopiota, voit ladata Visual Studio 2019 täältä.

Luo konsolisovellusprojekti Visual Studiossa

Ensinnäkin, luodaan .NET Core -konsolisovellusprojekti Visual Studiossa. Olettaen, että Visual Studio 2019 on asennettu järjestelmään, luo uusi .NET Core Console -sovellusprojekti Visual Studiossa noudattamalla alla olevia ohjeita.

  1. Käynnistä Visual Studio IDE.
  2. Napsauta Luo uusi projekti.
  3. Valitse Luo uusi projekti -ikkunassa ”Console App (.NET Core)” näytetystä malliluettelosta.
  4. Napsauta Seuraava.
  5. Määritä seuraavan projektin nimi ja sijainti uuden Konfiguroi uusi projekti -ikkunassa.
  6. Napsauta Luo.
  7. Tämä luo uuden .NET Core -konsolisovellusprojektin Visual Studio 2019: ssä. Käytämme tätä projektia tämän artikkelin seuraavissa osissa.

Mikä on projektio C #: ssa?

Projisointi tarkoittaa objektin muuttamista uuteen muotoon siten, että juuri luotu objekti sisältää vain käytettävät ominaisuudet. Kielen integroitu kysely (LINQ) tukee kahta tavallista kyselyn projektio-operaattoria, Select ja SelectMany.

Voit käyttää Select- ja SelectMany-operaattoreita projisoimaan yhden ominaisuuden tai projisoimaan kyselyn tulokset tai projisoimaan useita ominaisuuksia tietolähteestä nimettömäksi. Voit jopa suorittaa laskutoimituksia, suodatuksia tai muita toimintoja projektiolle tarpeen mukaan.

Seuraavissa osioissa tutkitaan, miten voimme työskennellä näiden operaattoreiden kanssa C #: ssä.

Projekti Select-operaattorilla C #: ssä

Kirjoita seuraava koodi Program.cs-tiedostoon.

public class Kirjoittaja

{

julkinen int Id {get; aseta; }

julkinen merkkijono Etunimi {get; aseta; }

julkinen merkkijono Sukunimi {get; aseta; }

julkinen merkkijono Osoite {get; aseta; }

public Author (int id, merkkijono etunimi,

merkkijono sukunimi, merkkijonon osoite)

    {

this.Id = id;

this.FirstName = etunimi;

this.Sukunimi = sukunimi;

this.Osoite = osoite;

    }

}

Seuraava koodinpätkä kuvaa, kuinka voit käyttää Select-operaattoria tietojen kyselyyn.

var kirjoittajat = uusi luettelo

{

uusi kirjailija (1, "Joydip", "Kanjilal", "Hyderabad, Intia"),

uusi kirjailija (2, "Anand", "Naraswamy", "Kochi, Intia"),

uusi kirjailija (3, "Steve", "Smith", "Ohio, USA"),

uusi kirjailija (4, "Uday", "Denduluri", "Lontoo, Iso-Britannia")

};

foreach (muuttujan nimi tekijöissä. Valitse (e => e.Etunimi))

{

Console.WriteLine (nimi);

}

Kun suoritat yllä olevan koodinpätkän, kaikkien tekijöiden etunimet näkyvät konsoli-ikkunassa.

Projekti nimettömiin tyyppeihin C #

Voit projisoida useampaa kuin yhtä ominaisuutta tietolähteestä, voit myös heijastaa myös nimettömäksi. Seuraava koodinpätkä kuvaa, kuinka voit projisoida useita ominaisuuksia nimettömäksi tyypiksi.

var data = tekijät.Valitse (e => uusi {e.Etänimi, e.Sukunimi});

Projekti käyttäen SelectMany-operaattoria C #: ssä

Voit hyödyntää SelectMany-operaattoria ja kysyä tietoja IEnumerable-käyttöliittymän toteuttavasta kokoelmasta. Voit käyttää SelectMany-operaattoria, kun haluat kysellä tietoja useista kokoelmista ja heijastaa tai tasoittaa ne yhdeksi sekvenssiksi.

Huomaa, että sekä Select että SelectMany tuottavat tuloksen lähdearvoista. Vaikka Select tuottaa yhden tuloksen kustakin lähde-arvosta, SelectMany tuottaa ketjutetun alakokoelman kustakin lähde-arvosta.

Lisätään nyt ylimääräinen ominaisuus Kirjoittaja-luokkaan Aiheet. Tämä ominaisuus on luettelo merkkijonoista, jotka sisältävät niiden aiheiden nimet, joista kirjoittaja kirjoittaa kirjoja.

public class Kirjoittaja

    {

julkinen int Id {get; aseta; }

julkinen merkkijono Etunimi {get; aseta; }

julkinen merkkijono Sukunimi {get; aseta; }

julkinen merkkijono Osoite {get; aseta; }

public List Aiheet {get; aseta; }

public Author (int id, merkkijono etunimi, merkkijono sukunimi,

merkkijonoosoite, luetteloi aiheet)

        {

this.Id = id;

this.FirstName = etunimi;

this.Sukunimi = sukunimi;

this.Osoite = osoite;

tämä.Aiheet = aiheet;

        }

    }

Voit käyttää seuraavaa koodinpätkää luodaksesi luettelon kirjoittajista.

var kirjoittajat = uusi luettelo

{

uusi kirjailija (1, "Joydip", "Kanjilal", "Hyderabad, Intia",

uusi luettelo {"C #", "F #"}),

uusi kirjailija (2, "Anand", "Naraswamy", "Kochi, Intia",

uusi luettelo {"C #", "VB.NET"}),

uusi kirjailija (3, "Steve", "Smith", "Ohio, USA",

uusi luettelo {"C #", "C ++"}),

uusi kirjailija (4, "Uday", "Denduluri", "Lontoo, Iso-Britannia",

uusi luettelo {"C #", "VB.NET"}),

uusi kirjailija (5, "Jane", "Barlow", "Lontoo, Iso-Britannia",

uusi luettelo {"C #", "C ++"})

 };

Ja voit käyttää alla olevaa koodinpätkää hakemaan ohjelmointikielien nimet, joista kirjoittajat kirjoittavat kirjoja.

var data = tekijät.ValitseMany (a => a.Aiheet) .Distinct ();

foreach (var-aihe tiedoissa)

{

Console.WriteLine (aihe);

}

Suodata tulosdataa C # -operaattorilla missä

Voit käyttää Where-operaattoria SelectMany: n jälkeen suodattaaksesi tulosjoukon. Seuraava koodinpätkä suoritettaessa näyttää sen tekijän etunimen ja Aiheen, jonka etunimi alkaa merkillä “J” ja asuu Isossa-Britanniassa.

var data = tekijät

.Missä (a => a.Osoite.IndexOf ("UK")> = 0)

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

.Where (n => n.Sukunimi.StartsWith ("J"));

foreach (var-tekijä tiedoissa)

{

Console.WriteLine (tekijä);

}

Kun suoritat yllä olevan koodinpätkän, sinun pitäisi nähdä ulostulo konsoli-ikkunassa, kuten alla olevassa näyttökuvassa näkyy.

Projektioita voidaan käyttää työskenneltäessä EF Core: n kanssa, joten voit noutaa vain sarakkeet sovelluksessasi tarvittavasta tietokannasta. Tulevassa tässä artikkelissa käsittelen joitain edistyneitä toimintoja, joissa käytetään ennusteita, kuten yksi-moniin-projektiot, tulosten suodatus ja järjestäminen.