簡體   English   中英

LINQ查詢不返回值

[英]LINQ Query Returning No Value

我目前正在嘗試通過MS SQL數據庫運行LINQ查詢。 這就是我所做的。

  1. 如果要通過服務器資源管理器,可以看到數據庫,表和內部數據。
  2. 我已經從“添加新項目..”自動創建了一個新的數據集。 然后,我將表從服務器資源管理器中拖到了DataSet的設計器視圖中。 出現正確的表標題和列標題。 我們稱之為“ MyTableDataSet”。
  3. 在我的代碼中,當我需要查詢時,這就是我的代碼。

      MyTableDataSet data = new MyTableDataSet (); var queryResult = from c in data.MyTable select c; foreach (var date in queryResult) { // nothing! } 
  4. 不知道為什么,但是在運行查詢后通過調試器查看“ queryResult”,我得到-空=“枚舉未產生任何結果”。

我對LINQ表達式做錯了嗎? 我猜這是一個“選擇*”。 該表中確實有數據,大約有50行。 也許我需要“填充”數據集? 我正在通過服務器資源管理器使用Windows身份驗證來查看數據。 如果我可以從那里看到它,那么代碼也應該也可以訪問? 不確定。 :|

感謝您為解決此問題可能提供的任何幫助。

根據您的代碼,您正在創建一個新的數據集並立即對其進行查詢。 它當然是空的。

您必須使用在數據集設計器中拖動表格時創建的表格適配器來填充數據集。

這是一個使用DataTable的工作示例:

var queryResult = from c in data.MyTable select c;
DataTable dt = ToDataTable(yourDataContext, queryResult);

foreach (DataRow dr in dt.Rows)
{
  // ...
}
dt.Dispose();

ToDataTable函數來自此處

public DataTable ToDataTable(System.Data.Linq.DataContext ctx, object query)
{
     if (query == null)
     {
          throw new ArgumentNullException("query");
     }

     IDbCommand cmd = ctx.GetCommand(query as IQueryable);
     SqlDataAdapter adapter = new SqlDataAdapter();
     adapter.SelectCommand = (SqlCommand)cmd;
     DataTable dt = new DataTable("sd");

     try
     {
          cmd.Connection.Open();
          adapter.FillSchema(dt, SchemaType.Source); 
          adapter.Fill(dt);
     }
     finally
     {
          cmd.Connection.Close();
     }
     return dt;
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM