Вы, похоже, упускаете самую неотразимую особенность Dapper;он отобразит Продукты для вас
Предполагается, что он будет работать как (супер упрощенно:
class Product{
int ID;
string Name;
}
И если ваши имена столбцов в БД не совпадают, то вы используете их псевдоним в запросе:
using(con = ...){
var prodList = con.Query<Product>("select prodid as ID, prodname as Name from products where prodid between @a and @b", new{ a = 1, b = 100});
}
Вот и все: dapper запускает запрос и генерирует бесчисленное множество продуктов без "строка за строкой, если столбец тогда ..."
Как выпри использовании sp у вас есть проблема в том, что вы не можете использовать псевдонимы для ваших столбцов, но вы можете либо:
- использовать технику для сопоставления имен столбцов с вашими свойствами - Вручную сопоставлять имена столбцов с помощью свойств класса
- запустите sp и примите ienumerable анонимного типа со свойствами, названными так, как sp выводил их (вы сейчас делаете что-то подобное), а затем используйте LINQ select для создания ваших продуктов;что-то вроде
con.Query("spname", ..params..).Select(e => new Product(){ ID = e.prodid, Name = e.prodname})
- не используйте sp; выбирайте из таблиц и псевдонимы столбцов, чтобы соответствовать вашим свойствам (больше похоже на то, как dapper был предназначен для использования)