在linq查询中如何将int转换为字符串

12 浏览
0 Comments

在linq查询中如何将int转换为字符串

我遇到了一个将int (long)转换为字符串的问题。当我使用l.code == l.id.ToString()时,它会抛出一个异常。

id是long类型,code是nvarchar类型。

我使用的代码是

if (municipalityId != null)
    q = q.Where(l => l.MunicipalityId == municipalityId.Value && l.Code == l.Id.ToString());

非常感谢任何帮助。

0
0 Comments

问题的原因:EF将ToString()方法转换为实际的SQL类型转换时出现了问题。

解决方法:尝试显式指定SQL函数。

代码示例:

if (municipalityId != null)
q = q.Where(l => l.MunicipalityId == municipalityId.Value && l.Code == SqlFunctions.StringConvert((decimal)l.Id).Trim())

在使用LINQ查询时,有时需要将整数(int)转换为字符串(string)。然而,有些开发者在进行这种转换时遇到了问题。在Matt Thrower的提问中指出,这是EF在将ToString()方法转换为实际的SQL类型转换时出现的问题。

为了解决这个问题,可以尝试显式指定SQL函数。以下是一个示例代码:

if (municipalityId != null)
    q = q.Where(l => l.MunicipalityId == municipalityId.Value && l.Code == SqlFunctions.StringConvert((decimal)l.Id).Trim())

通过使用SqlFunctions.StringConvert()方法将整数转换为字符串,并使用Trim()方法去除字符串两端的空格,我们可以成功将整数转换为字符串。这样,我们就解决了在LINQ查询中将整数转换为字符串的问题。

0