c# - 使用 linq 从动态 sql 查询中检索和打印数据

标签 c# sql linq

我有一些现有代码使用 ADO.NET 从数据库中检索数据,我想将其转换为 linq。

代码所做的是通过命令行接收 SQL 查询,执行它,返回行和它们的列名,然后将它们打印到屏幕上。我想知道如何在 linq 中编写这段代码。

必须通过命令行给出整个 sql 查询,因为我想限制从中选择行的位置。这是我希望它完成的唯一方法,所以除非你有可以这样工作的方法,否则我不能使用它。除了我自己,没有人可以访问该程序,因此安全性不是问题。

private static SqlConnection sqlConnection = new SqlConnection();

private static void OConnection()
{
    sqlConnection = new SqlConnection();
    sqlConnection.ConnectionString = MyConsoleApp.Properties.Settings.Default.ConnStr;
    sqlConnection.Open();
}

...

string query = Console.ReadLine();
OpenConn();
SqlCommand command = new SqlCommand(query, sqlConnection);
SqlDataReader reader = command.ExecuteReader();

if (reader != null)
{
    while (reader.Read())
    {
        for (int i = 0; i < reader.FieldCount; i++)
        {
            Console.Write("| {0}: {1}", reader.GetName(i), reader.GetValue(i));
        }
        Console.WriteLine();
    }
}

最佳答案

我看不到这里迁移到 LINQ 的值(value)。 LINQ 的美妙之处在于您可以使用域对象的语言而不是 T-SQL 来编写查询。在您的情况下,您只想接受实际的 SQL 命令。解构命令似乎需要更多工作,将其转换为 LINQ——使用反射来识别数据上下文中的适当表——然后执行查询仅打印出结果对象的属性。

关于c# - 使用 linq 从动态 sql 查询中检索和打印数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/477075/

相关文章:

c# - tfs 站点服务器中出现 "Value cannot be null. Parameter name: key"问题

mysql - SQL 语法错误 1064

mysql - 如何用动态表名编写一个mysql函数?

c# - 如何使用 XElement 检查元素是否存在?

c# - LINQ 按多列搜索

c# - 安全地将 UTC 日期时间转换为本地时间(基于 TZ)以进行计算?

c# - XUnit HttpStatusCode 不包含 Should 的定义

sql - Django sql排序依据

c# - linq-sql 中的安全查询?

c# - Uncaught ReferenceError : __doPostBack is not defined