Только к вашему сведению, вы никогда не добавляете новый HouseAnnouncement
в свой список, и ваш цикл никогда не будет выполняться для строки last , но я предполагаю, что это ошибки в примере, а нев вашем реальном коде.
Вы можете сделать что-то вроде этого:
return adapter.GetData().Rows.Cast<DataRow>().Select(row =>
new HouseAnnouncement()
{
Area = Convert.ToSingle(row["powierzchnia"]),
City = (string)row["miasto"],
}).ToList();
Я обычно стремлюсь к читабельности, а не к краткости, но мне кажется, что это довольно читабельно.
Обратите внимание, что, хотя вы все еще можете кэшировать DataTable
и использовать table.powierzchniaColumn
в лямбда-выражении, я исключил это, чтобы вы не использовали замыкание, которое не было действительно необходимым (замыкания создают существенную сложностьвнутренняя реализация лямбды, поэтому я избегаю их, если это возможно).
Если для вас важно сохранить ссылки на столбцы, как они, то вы можете сделать это следующим образом:
using (var table = adapter.GetData())
{
return table.Rows.Cast<DataRow>().Select(row =>
new HouseAnnouncement()
{
Area = Convert.ToSingle(row[table.powierzchniaColumn]),
City = (string)row[table.miastoColumn],
}).ToList();
}
Это добавит сложности к фактическому IL, который генерирует компилятор, но он должен помочь вам.