繁体   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