2009-10-28 5 views
2

У меня есть datatable, который я хочу запросить. запрос очень большой и сложный, и он работает, когда я запускаю его в редакторе сервера SQl, поэтому у меня есть текст запроса.Запросить dataTable большой строкой запроса

Мне нужно запросить данные с этим запросом String. Для перевода запроса в linq потребуются годы, а также метод Select() DataTable не будет обрабатывать его.

Как я могу управлять текстовым запросом в dataTable?

ответ

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 
    } 
} 

Вы можете загрузить его в DataTable, используя 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) и отобразить ее для возврата соответствующего объекта.

Смежные вопросы