2009-10-28 22 views
2

我有一个我想查询的数据表。 查询是非常大和复杂的,它在我在SQl服务器编辑器中运行它时起作用 - 所以我有查询文本。查询大型查询数据表字符串

我需要使用此查询字符串查询数据表。 要将查询转换为linq将需要几年时间,并且DataTable的Select()方法也不会处理它。

如何操作数据表上的文本查询?

回答

0

可以使用SqlCommand,像这样:

using(var connection = new SqlConnection("connection string")) 
using(var command = new SqlCommand(@" 
your very long query 
    ", connection) 
using(var reader = command.ExecuteReader()) { 
    while(reader.Read()) { 
     //use reader[colIndex] to get a field from the current row 
    } 
} 

您可以使用SqlDataAdapter其加载到数据表中,像这样:

var table = new DataTable(); 

using(var connection = new SqlConnection("connection string")) 
using(var command = new SqlCommand(@" 
your very long query 
    ", connection) 
using(var adapter = new SqlDataAdapter(command)) { 
    adapter.Fill(table); 
} 
2

你可能想继续并使其成为一个存储过程,特别是如果它需要一组相对固定的参数。然后你可以将你的存储过程添加到你的Linq2(entitites,sql,whatever)命令中,并映射它以返回适当的对象。