簡體   English   中英

在實體框架4.0中將字符串轉換為int時出現運行時錯誤

[英]run time error while converting string to int in entity framework 4.0

protected void GetFinalResult(IQueryable<clsProfileData> result)
{
    if (ddlHeightFrom.SelectedValue != "0" && ddlHeightTo.SelectedValue != "0")
    {
        int from = Convert.ToInt32(ddlHeightFrom.SelectedValue);      
        result = result.Where(p => Convert.ToInt32(p.Height) > from);
    }
}

我正在使用Entity Framework 4.0和上面的方法p.Height是導致轉換的錯誤(字符串為int)。 有沒有辦法處理這個?

一條建議:如果可以的話,將高度作為數字存儲在數據庫中。 EF(當前)沒有內置函數可以輕松地將字符串轉換為數字。 EntityFunctions *或SqlFunctions也不會幫助你。

存儲數字不僅可以使查詢更容易,而且還可以使您編寫可搜索的查詢。 Where有一個轉換,你現在得到,禁止在您的專欄任何索引。

如果您無法更改數據庫,則可以使用解決方法:您可以使用前導零存儲數字,以確保它們都具有相同的長度。 然后你可以使用字符串比較,因為0000200010之前,而2在排序之后在10之后。 這樣做,你可以在你的linq語句中使用String.Compare ,它在sql中轉換為<>

另見: https//stackoverflow.com/a/10521557/861716

*實體框架6中的DbFunctions

將字符串轉換為Int32時出錯。 我在XML數據描述中找不到任何字段,其中字段是Int32。 最后,存儲過程將該字段作為int返回,而不是字符串。 奇怪的是錯誤消息抱怨它無法在另一個方向上轉換數據。

首先嘗試解析有效​​性:

http://msdn.microsoft.com/en-uk/library/f02979c7.aspx

(可能在你這樣做的時候:

Convert.ToInt32(ddlHeightFrom.SelectedValue)

例如

int from;
int h;
bool fromres= Int32.TryParse(ddlHeightFrom.SelectedValue, out from);
bool hres= Int32.TryParse(p.Height, out h);
...

暫無
暫無

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

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