На самом деле это может быть немного короче, потому что вы можете использовать linq, чтобы вырезать промежуточные списки.
Обратите внимание, что ваш динамический запрос c может быть подвержен атакам sql инъекцией. Если свойство Tabellenname
не скомпилировано в вашем коде, я бы не использовал это свойство в запросе выбора.
public void LiedEinfuegen()
{
StringBuilder sb = new StringBuilder();
// Use linq to iterate over the list with the filters inline, that way you dont't need to initialize intermediate lists.
foreach (var item in AccessTabellen.GetAllTableData(connectionString, "SELECT * FROM " + AusgewaehlteTabelle.Tabellenname)
.Where(l => l.Liedernummer == AusgewaehltesLied.Liedernummer)
.Distinct())
{
sb.AppendLine(item);
}
// If you initialize LiederlisteAnzeige with an empty string "", you don't need the if null check.
LiederlisteAnzeige += sb.ToString();
}
РЕДАКТИРОВАТЬ: Если вы объедините это с ответом Селима , вы могли бы сделайте это в одной строке, однако это немного повлияет на читаемость:
LiederlisteAnzeige += string.Join(
Environment.NewLine,
AccessTabellen.GetAllTableData(connectionString, "SELECT * FROM " + AusgewaehlteTabelle.Tabellenname)
.Where(l => l.Liedernummer == AusgewaehltesLied.Liedernummer)
.Select(s => s.Liedername)
.Distinct());