[英]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
有一個轉換,你現在得到,禁止在您的專欄任何索引。
如果您無法更改數據庫,則可以使用解決方法:您可以使用前導零存儲數字,以確保它們都具有相同的長度。 然后你可以使用字符串比較,因為00002
在00010
之前,而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.