2014-05-01 68 views
-1

我試圖從SQL查詢中檢索Dataset。我正在使用Edmx進行數據訪問。如果我使用一個簡單的存儲過程來檢索dataTable,那麼該函數可以正常工作,當我試圖檢索數據集時,我無法將SQL結果轉換爲數據集。如何從C#中的SQL查詢檢索數據集#

這裏是我的SQL

--Query For Retrieving LastUpdatedDate 
select top 3 
    YP.utblYPBusinessInstanceInfoKeys.BusinessID, 
    YP.utblYPBusinessInstanceInfoKeys.BusinessName, 
    YP.utblYPBusinessInstanceInfoKeys.LastUpdatedByDate as GeneraliseDate 
from 
    YP.utblYPBusinessInstanceInfoKeys 
order by 
    GeneraliseDate desc 

--Query For Retrieving Listing by CreatedDate 
select top 3 
    YP.utblYPBusinessInstanceInfoKeys.BusinessID, 
    YP.utblYPBusinessInstanceInfoKeys.BusinessName, 
    YP.utblYPBusinessInstanceInfoKeys.CreatedByDate as GeneraliseDate 
from 
    YP.utblYPBusinessInstanceInfoKeys 
order by 
    GeneraliseDate desc 

我如何在C#中檢索數據集在SQL結果?任何幫助肯定是讚賞。

回答

1

給定sql查詢,將結果填充到數據集中的最簡單方法是使用SqlDataAdapter類,它完成所有工作(只需提供查詢和打開的連接以及填充數據集)。

在你情況下,將:

string queryString1 = "select top 3 YP.utblYPBusinessInstanceInfoKeys.BusinessID, 
            YP.utblYPBusinessInstanceInfoKeys.BusinessName, 
            YP.utblYPBusinessInstanceInfoKeys.LastUpdatedByDate as GeneraliseDate 
         from YP.utblYPBusinessInstanceInfoKeys 
         order by GeneraliseDate desc" 

string queryString2 = "select top 3 YP.utblYPBusinessInstanceInfoKeys.BusinessID, 
            YP.utblYPBusinessInstanceInfoKeys.BusinessName, 
            YP.utblYPBusinessInstanceInfoKeys.CreatedByDate as GeneraliseDate 
         from YP.utblYPBusinessInstanceInfoKeys 
         order by GeneraliseDate desc" 

string queryString = queryString1 + Environment.NewLine + queryString2; 


DataSet dataSet = new DataSet(); 

var connection = new SqlConnection("TODO:put connection string here"); 
connection.Open(); 
using(connection) 
{ 
    SqlDataAdapter adapter = new SqlDataAdapter(queryString, connection); 
    adapter.Fill(dataSet); 
} 

// here you go 
foreach(DataTable table in dataSet.Tables) 
{ 
    Console.WriteLine(table.Name); 
} 
0

實體框架返回實體而不是數據表或數據集。 您可以使用ADO.net(SqlCommand,SqlAdapter,...) 或通過使用.AsEnumerable()手動執行它並將其填充到新的數據表或數據集中!