首页 > 解决方案 > 在比较 Linq 实体和 SQL 中的字符串时遇到问题

问题描述

我对 Linq 和 EF 还很陌生。

字符串的比较有什么不正确的吗?

我已经尝试过String.EqualsorCompareTo但是那些返回boolean值,我读到Linq的比较String == string就像WHERE statement来自 SQL。

public IHttpActionResult GetMultifiberResult(string partNumber)
{
    var list = db.MultifiberResults.Where(s => s.PartNumber == 
                partNumber).ToList();

    return Ok(list);
}

列表应返回一组值,其中数据库中的列 PartNumber 等于参数 partNumber。当我使用 int 比较进行搜索时,它确实在 int 列中找到匹配项,但在 varchar 列中找不到。控制器总是返回空并且计数为 0。

标签: c#entity-frameworklinq

解决方案


可能只是不匹配的情况吗?当且仅当您想忽略大小写时才尝试此操作:

public IHttpActionResult GetMultifiberResult(string partNumber)
{
    var list = db.MultifiberResults.Where(s => s.PartNumber.Equals(partNumber, StringComparison.OrdinalIgnoreCase)).ToList();

    return Ok(list);
}

否则,您的代码很好。您需要对其进行调试并向我们展示结果,并确保数据库或参数值中没有前导或尾随空格;在这种情况下,你应该.Trim()两者兼而有之。


推荐阅读