2012-03-09 92 views
4

我在我的應用程序下面的代碼LINQ到SQL代碼沒有返回結果,即使生成的SQL不會返回結果

var query = context.xosAssets.Where(x => x.GSA == 0).Take(INDEX_ASSET_QUERY_COUNT); 
var assets = query.ToList(); 

// Debug 
string message = string.Format("Assets waiting for indexing: {1}{0}Database:{3}{0}Query: {2}", 
    Environment.NewLine, query.Count(), query.ToString(), context.Connection.Database); 
    System.Diagnostics.EventLog.WriteEntry("GSAFeed", message, System.Diagnostics.EventLogEntryType.Information); 

在運行此,query.Count()爲零,assets.Count是零,因爲沒有結果返回。但是,這是不正確的,因爲此數據庫中的所有記錄都將其GSA字段設置爲零。

當我從query.ToString()輸出並運行它(替換爲0 @p0),我得到的所有的正確答案。我已經驗證了我「完全相同的數據庫M上爲正在context.Connection.Database輸出,我跑出來的什麼可能是錯誤的選擇。

爲什麼LINQ到SQL沒有返回結果,即便是實際的SQL不?

+0

什麼是'INDEX_ASSET_QUERY_COUNT'設置? – 2012-03-09 15:58:53

+0

什麼數據類型是'.GSA'? – 2012-03-09 15:59:10

+0

'GSA'是一個short,而'INDEX_ASSET_QUERY_COUNT'是一個int const,設置爲250,它在輸出SQL中的TOP()調用中正確顯示。 *編輯*前夕沒有頂部通話它仍然失敗。 – KallDrexx 2012-03-09 16:00:56

回答

0

香港專業教育學院跑進過去像這樣的問題,我一般以長形式&重新寫LINQ2SQL它得到了我麻煩。不是高手,足以知道爲什麼,但它可以幫助你。

編輯 類似這樣的:

var query = (from x in context.xosAssets 
      where x.GSA == 0 
      select x).Take(INDEX_ASSET_QUERY_COUNT); 

這應返回的IQueryable所以沒有必要進行.ToLIst()

+0

長形意味着什麼? – KallDrexx 2012-03-09 16:05:33

+0

請參閱上面的我的編輯 – LenPopLilly 2012-03-09 17:34:06