Как вернуть выходные данные хранимой процедуры в список
У меня есть программа, которая отображает список значений, соответствующих определенным условиям. Когда я запускаю SP для извлечения значений в консольном приложении C# , я получаю System.Коллекции.Generic.List'1[StringsTest.Models.Брокер] печатается вместо результирующего набора. Однако работает старпома getCOAgents в SSMS возвращает мой желаемый набор результатов.
Мой SP выглядит следующим образом :
CREATE PROCEDURE [dbo].[getCOAgents] AS BEGIN SET NOCOUNT ON; SELECT a.agent_shortname FROM BrokerTest AS a INNER JOIN (SELECT agent_shortname, COUNT(*) AS Expr1 FROM BrokerTest GROUP BY agent_shortname HAVING (COUNT(*) > 1)) AS b ON a.agent_shortname = b.agent_shortname WHERE (a.agent_shortname LIKE '_________C%') AND (a.term = 'NB') ORDER BY a.agent_shortname END GO
Что я уже пробовал:
Этот SP возвращает список значений с символом C в индексе 10 . Я вызываю GetData() в основном методе консольного приложения, как показано ниже:
namespace StringsTest { class Program { static void Main(string[] args) { Console.WriteLine(GetData()); } } }
И функция как :
public static List<Broker> GetData() { List<Broker> details = new List<Broker>(); using (SqlConnection conn = new SqlConnection(Helpers.DatabaseConnect)) { conn.Open(); DataTable dt = new DataTable(); SqlCommand cmd = new SqlCommand("getCOAgents", conn); cmd.CommandType = CommandType.StoredProcedure; cmd.ExecuteNonQuery(); SqlDataAdapter da = new SqlDataAdapter(cmd); da.Fill(dt); foreach (DataRow dr in dt.Rows) { Broker broker = new Broker(); broker.Code = Convert.ToString(dr["agent_shortname"]); details.Add(broker); } conn.Close(); } return details; }
Ожидаемый вывод в консоли (пример результирующего набора)
ALID-HEA-CO-001
ALID-HEA-CO-001
ALID-HEA-CO-001
ЭМИЛЬ-MTR-CO-012
ЭМИЛЬ-MTR-CO-012