在Linq lambda WHERE方法中将字符串转换为int

时间:2015-02-12 04:18:49

标签: c# .net linq lambda

我正在尝试使用字符串列上的where子句选择行,并与我的变量zip进行比较,即int。这可能吗?我在lambda中尝试过int.Parse(),但这不起作用。此外,我似乎无法使用SQLFunctions调用,因为我使用的是.NET 3.5。

在下面的PostcodeStart / PostcodeEnd中是nvarchar,而zip是一个int。

var re = postCodes.Where(
                x => x.PostcodeStart <= zip && x.PostcodeEnd >= zip);

1 个答案:

答案 0 :(得分:-1)

在Linq调用之前将int转换为字符串:

string zipString = zip.ToString("00000");
var re = postCodes.Where(
                x => x.PostcodeStart.CompareTo(zipString) <= 0 
                  && x.PostcodeEnd.CompareTo(zipString) >= 0);

作为旁注,int不是保存邮政编码的好方法。您不仅要担心前导零,而且邮政编码也有四位数的扩展名("00000-0000")。最好将它们留作字符串。