在C#中运行SQL查询后,很少有列被检索为“空”

时间:2018-08-16 01:27:24

标签: c# sql-server linq linq-to-sql linq-to-entities

我已经在Web API解决方案中实现了LINQ to Entities,以在给定的字符串上实现“慢速搜索”。

使用dbContext.database.SQLQuery<Table>语法映射SQL查询并最终接收到行集合。

该表有3列:

AccountID (Guid)
Motor Name (NVARCHAR(50)
Motor Number (NVARCHAR(30)
使用正确的Guid值检索

AccountID列,而在调试和检查属性值时发现其他2列为null。尽管在数据库中,这些列确实具有值。

为了验证,我在SSMS中运行了相同的SQL查询-在这里,正确显示了列的值。

SQL查询为:

DECLARE @search NVARCHAR(10)
DECLARE @factor INT

SELECT AccountID, MotorName, MotorNumber
FROM MotorStore
WHERE DIFFERENCE(MotorName, @search) >= @factor

我非常感谢社区分享一些指导。

有人还能共享上述查询的LINQ等效项吗?

1 个答案:

答案 0 :(得分:0)

通过使用如下所示的System.Data.Objects.SqlClient命名空间中的Difference方法,可以轻松地做到这一点。

            var res = from c in ctx.MotorStore
                      where SqlFunctions.Difference(c.MotorName,"searchstring")> factor

我建议您在这里阅读这篇文章。

https://docs.microsoft.com/en-us/dotnet/api/system.data.objects.sqlclient.sqlfunctions.difference?view=netframework-4.5.2