Jak v ASP.NET připravit z dat seznam oddělený čárkami pomocí LINQ

19. 2. 2016, Vladimír Klaus, přečteno 719x

ASP.NET/C#
SQL

Předpokládejme, že máte v nějaké tabulce sadu hodnot, které potřebujete zobrazit jako seznam oddělený čárkami. V mém případě potřebuji zobrazit seznam kategorií, do kterých je článek zařazen. Nabízí se dvě řešení.

Nejprve si ukážeme základ a běžné řešení:

string s = "";
//otevřu databázi
var db = Database.Open("Data");
var SQL =
    "SELECT Kategorie.Nazev FROM ClankyKategorie " +
    "INNER JOIN Kategorie " +
    "ON ClankyKategorie.IdKategorie=Kategorie.ID " +
    "WHERE ClankyKategorie.IdClanku=@0 "+
    "ORDER BY Kategorie.Nazev";
var data = db.Query(SQL, aIdClanku);

//mám data, teď sestavím seznam oddělený čárkami
foreach (var Kategorie in data) {
    s = s + Kategorie.Nazev+ ", ";
}
//odstraním poslední čárku a mezeru
if (s.Length > 0) {
    s = s.Substring(0, s.Length - 2);
}
return s;

Ale pokud použijeme LINQ zápis, dostaneme se k úspornější a elegantnější variantě:

//mám data, teď sestavím pole složené z názvů kategorií
var pole = data.Select(p => p.Nazev).ToArray();
//a pak už jednoduše sestavím výsledný string s oddělovačem
s = string.Join(", ", pole);
return s;

Pokud by vás zajímalo, k čemu třeba toto může sloužit, tak vězte, že právě takto připravuji na tomto webu klíčová slova pro stránku s daným článkem. Stačí stisknout Ctrl+U (Zobrazit zdrojový kód) a najít na jakékoliv stránce <meta name="Keywords" ...>