2014-09-01 88 views
0

我一直在谷歌搜索:linq to entities does not recognize the method int32 toint32。 我喜歡varchar該列表在我的數據庫:LinQ不識別方法'int32 toint32'

1,2,3,4,5,6,7。

我需要訂購該列表並獲取最大值。我使用這個,但它不起作用,我也看到了其他的解決方案,但沒有任何工作。這是我的查詢:

var query= dbcontext.NV_Users.OrderBy(p => Convert.ToUInt32(p.code)).ToList().Max(); 

而我與正常的查詢努力,也沒有工作:

var query= from _NV_Field in dbcontext.NV_Users 
      orderby Convert.ToInt32(_NV_Field.code) ascending 
      select _NV_Field.code; 

之前詢問這裏,我已經像一個瘋狂的谷歌搜索。

+1

爲什麼你使用'.Max'?你想完成什麼,即。你想要的結果的文字描述,你能提供嗎? – 2014-09-01 12:44:18

回答

0

由於您使用.ToList(),你可能只是改變你的函數的順序:

var query= dbcontext.NV_Users.ToList().OrderBy(p => Convert.ToUInt32(p.code)).Max(); 
+0

真的嗎?如果它是一個大列表,那麼對數據庫進行排序會更好。 – Rawling 2014-09-01 12:40:00

+1

雖然這確實可以避免這個錯誤,但是OrderBy仍然毫無意義,因爲他正在調用Max(),它將返回一個單值。 – 2014-09-01 12:40:32

+0

@Rawling如果列表很大,則不應從DB_at all_中提取數據。由於OP已經使用'ToList()',所以可以假定數據庫中的項目數量相對較小。另外事實上,在這種情況下排序實際上毫無意義。 – ken2k 2014-09-01 12:42:44

0

最後我找到了解決辦法。我需要轉換字段上的選擇

var consulta = from _NV_Fabricantes in dbcontext.NV_Fabricantes.ToList().OrderBy(p =>  Convert.ToInt32(p.codigo)) 
          select Convert.ToInt32(_NV_Fabricantes.codigo); 
相關問題