您好我有一个返回Zipcode的Linq to Entity语句。
我将此返回邮政编码存储在我的强类型列表中
在我的List Zipcode数据类型是int
当我的Liq语句返回Zipcode时,有一些NULL和空值
我无法将这些NULL和Empty值转换为int
我该如何处理这种情况呢
我试过这样的事情
ZipCode= Convert.ToInt32(p.ZipCode ?? "0")
非常感谢任何帮助。
感谢
答案 0 :(得分:1)
如果你在内存中执行此操作(在已从数据库中提取结果之后),并在一行中执行此操作,则应编写类似
的内容int zip = Convert.ToInt32(!string.IsNullOrEmpty(p.ZipCode) ? p.ZipCode : "0");
如果您尝试将字符串转换为数据库中的查询内部的整数,则可能必须定义自定义函数,该函数将转换转换为数据库中的正确转换。 See this related question for a possible implementation
但是,我建议你不将邮政编码转换为整数。一个zip 不一个数字值,尽管是由数字组成(在世界的某些地方)。将它视为一个正确的字符串,看起来你已经在p
内部(可能是数据库)。同样的前提适用于电话号码,SSN,帐号等。
答案 1 :(得分:0)
如果没有看到您的实际查询并假设p.ZipCode是一个字符串,您可以执行类似这样的操作以转换为int
var query = from p in context.Entity
let ZipCode = context.Entity.Take(1).Select(x => (p.ZipCode == null || p.ZipCode == "") ? "0" : p.ZipCode).Cast<int>().FirstOrDefault()
select ZipCode;
答案 2 :(得分:0)
我首先要定义一个解析整数的lambda函数,如下所示:
Func<string, int> parse = t =>
{
int v;
if (!int.TryParse(t, out v))
{
v = 0;
}
return v;
};
然后你只需要这样做:
var zipCodes =
from e in db.Entity
select parse(e.ZipCode);
美好而简单!