C# 如何处理使用ado.net返回表的内联表值函数

C# 如何处理使用ado.net返回表的内联表值函数,c#,asp.net,sql-server,asp.net-mvc,ado.net,C#,Asp.net,Sql Server,Asp.net Mvc,Ado.net,我已经在sql中实现了内联表值函数。我正在尝试使用ado.net读取C中内联表值函数返回的表值。请帮忙。我在这里附上代码 Sql函数:- C代码:- 以下所有链接都与您的问题相关。。已经解决了。。因此,请在发布任何问题之前。。请看它是否已经有答案/解决了 表值函数返回一个表,以便读取commandtext应该是的结果 command.CommandText = "select * from dbo.fun(@lname)"; 现在,您正在使用ExecuteScalar函数执行命令 从MSDN-

我已经在sql中实现了内联表值函数。我正在尝试使用ado.net读取C中内联表值函数返回的表值。请帮忙。我在这里附上代码

Sql函数:- C代码:- 以下所有链接都与您的问题相关。。已经解决了。。因此,请在发布任何问题之前。。请看它是否已经有答案/解决了


表值函数返回一个表,以便读取commandtext应该是的结果

command.CommandText = "select * from dbo.fun(@lname)";
现在,您正在使用ExecuteScalar函数执行命令

从MSDN-

执行查询,并返回查询中第一行的第一列 查询返回的结果集。添加了其他列或行 忽略

因此,即使函数返回包含多列的记录集,也只返回第一行的第一列

如果需要读取表值函数返回的完整记录集,则需要使用ExecuteReader函数

将CommandText发送到连接并构建SqlDataReader

 [HttpPost]
            public void call_stored_procedure(List<string> lyname)
            {
                Console.WriteLine(lyname);
                string dogCsv = string.Join(",", lyname.Select(i => "'" + i + "'"));
                Console.WriteLine(dogCsv);
                using (SqlConnection connection = new SqlConnection("data source=.; database=Srivatsava; integrated security=SSPI"))
                {
                    connection.Open();
                    using (SqlCommand command = connection.CreateCommand())
                    {
                        command.CommandText = "select dbo.fun(@lname)";
                        command.Parameters.AddWithValue("@lname", dogCsv);
                        command.CommandType = CommandType.Text;
                        String s=command.ExecuteScalar().ToString();
                        Console.WriteLine(s);
                        connection.Close();
                    }
                }

            }
command.CommandText = "select * from dbo.fun(@lname)";