Programování

Jak používat projekce v C #

Projekce je operace, která transformuje výsledky dotazu. Projekci můžete použít k transformaci objektu do nového formuláře, který má pouze ty vlastnosti potřebné ve vaší aplikaci. V tomto článku se podíváme na to, jak můžeme pracovat s projekcemi v C #.

Chcete-li pracovat s příklady kódu uvedenými v tomto článku, měli byste mít ve svém systému nainstalovanou Visual Studio 2019. Pokud ještě nemáte kopii, můžete si stáhnout Visual Studio 2019 zde.

Vytvořte projekt konzolové aplikace v sadě Visual Studio

Nejprve si vytvořme projekt konzolové aplikace .NET Core v sadě Visual Studio. Za předpokladu, že je ve vašem systému nainstalovaná sada Visual Studio 2019, postupujte podle níže uvedených kroků a vytvořte nový projekt konzolové aplikace .NET Core v sadě Visual Studio.

  1. Spusťte Visual Studio IDE.
  2. Klikněte na „Vytvořit nový projekt“.
  3. V okně „Vytvořit nový projekt“ vyberte ze zobrazeného seznamu šablon „Console App (.NET Core)“.
  4. Klikněte na Další.
  5. V dalším okně „Konfigurace nového projektu“ zadejte název a umístění nového projektu.
  6. Klikněte na Vytvořit.
  7. Tím se vytvoří nový projekt aplikace konzoly .NET Core v sadě Visual Studio 2019. Tento projekt použijeme v následujících částech tohoto článku.

Co je projekce v C #?

Projekce odkazuje na akt transformace objektu do nové formy tak, že nově vytvořený objekt obsahuje pouze vlastnosti, které budou použity. Language Integrated Query (LINQ) provides support for two standard query projection operators, Select and SelectMany.

Pomocí operátorů Select a SelectMany můžete promítnout jednu vlastnost nebo promítnout výsledky dotazu nebo promítnout více vlastností ze zdroje dat do anonymního typu. Podle potřeby můžete na projekci dokonce provádět výpočty, filtrování nebo jiné operace.

V následujících částech prozkoumáme, jak můžeme pracovat s těmito operátory v C #.

Projektovat pomocí operátoru Select v C #

Napište následující kód do souboru Program.cs.

veřejná třída Autor

{

public int Id {get; soubor; }

public string FirstName {get; soubor; }

veřejný řetězec Příjmení {get; soubor; }

public string Adresa {get; soubor; }

public Author (int id, string firstName,

řetězec příjmení, adresa řetězce)

    {

this.Id = id;

this.FirstName = křestní jméno;

this.LastName = příjmení;

this.Address = adresa;

    }

}

Následující fragment kódu ukazuje, jak můžete využít operátor Select k dotazování na data.

var autoři = nový seznam

{

nový autor (1, "Joydip", "Kanjilal", "Hyderabad, INDIE"),

nový autor (2, "Anand", "Naraswamy", "Cochin, INDIE"),

nový autor (3, „Steve“, „Smith“, „Ohio, USA“),

nový autor (4, „Uday“, „Denduluri“, „London, UK“)

};

foreach (variační jméno u autorů, vyberte (e => e.FirstName))

{

Console.WriteLine (název);

}

Když provedete výše uvedený fragment kódu, v okně konzoly se zobrazí křestní jména všech autorů.

Promítání na anonymní typy v C #

Ze zdroje dat můžete promítnout více než jednu vlastnost, můžete dokonce promítnout také na anonymní typ. Následující fragment kódu ukazuje, jak můžete promítnout více vlastností do anonymního typu.

var data = autoři.Select (e => new {e.FirstName, e.LastName});

Projektovat pomocí operátoru SelectMany v C #

Můžete využít operátor SelectMany k dotazování na data z kolekce, která implementuje IEnumerable rozhraní. Operátor SelectMany můžete použít, když chcete dotazovat na data z několika kolekcí a projektovat je nebo je sloučit do jedné sekvence.

Všimněte si, že Select i SelectMany produkují výsledek ze zdrojových hodnot. Zatímco Select produkuje jeden výsledek z každé zdrojové hodnoty, SelectMany produkuje zřetězenou dílčí kolekci z každé zdrojové hodnoty.

Pojďme nyní do třídy Author přidat další vlastnost s názvem Subjekty. Tato vlastnost je seznam řetězců, které obsahují jména subjektů, o kterých autor píše knihy.

veřejná třída Autor

    {

public int Id {get; soubor; }

public string FirstName {get; soubor; }

veřejný řetězec Příjmení {get; soubor; }

public string Adresa {get; soubor; }

public List Subject {get; soubor; }

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

adresa řetězce, seznam předmětů)

        {

this.Id = id;

this.FirstName = křestní jméno;

this.LastName = příjmení;

this.Address = adresa;

this.Subjects = Subjects;

        }

    }

Následující fragment kódu můžete použít k vytvoření seznamu autorů.

var autoři = nový seznam

{

nový autor (1, "Joydip", "Kanjilal", "Hyderabad, INDIE",

nový seznam {"C #", "F #"}),

nový autor (2, "Anand", "Naraswamy", "Cochin, INDIE",

nový seznam {"C #", "VB.NET"}),

nový autor (3, „Steve“, „Smith“, „Ohio, USA“,

nový seznam {"C #", "C ++"}),

nový autor (4, "Uday", "Denduluri", "London, UK",

nový seznam {"C #", "VB.NET"}),

nový autor (5, „Jane“, „Barlow“, „London, UK“,

nový seznam {"C #", "C ++"})

 };

Níže uvedený fragment kódu můžete použít k načtení názvů programovacích jazyků, o kterých autoři píší knihy.

var data = autoři.SelectMany (a => a.Subjects) .Distinct ();

foreach (var předmět v datech)

{

Console.WriteLine (předmět);

}

Pomocí operátoru Where můžete filtrovat výsledná data v C #

K filtrování sady výsledků můžete použít operátor Where po SelectMany. Následující úryvek kódu při spuštění zobrazí jméno a předmět autora, jehož jméno začíná znakem „J“ a nachází se ve Velké Británii.

var data = autoři

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

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

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

foreach (var autor v datech)

{

Console.WriteLine (autor);

}

Když provedete výše uvedený fragment kódu, měli byste vidět výstup v okně konzoly, jak je znázorněno na obrázku níže.

Projekce lze použít při práci s EF Core, takže můžete načíst pouze sloupce z podkladové databáze, které potřebujete pro svou aplikaci. V budoucím článku zde budu diskutovat o některých pokročilých operacích využívajících projekce, jako jsou projekce jedna k mnoha, filtrování výsledků a objednávání.