c# - 在比较 Linq 实体和 SQL 中的字符串时遇到问题
问题描述
我对 Linq 和 EF 还很陌生。
字符串的比较有什么不正确的吗?
我已经尝试过String.Equals
orCompareTo
但是那些返回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。
解决方案
可能只是不匹配的情况吗?当且仅当您想忽略大小写时才尝试此操作:
public IHttpActionResult GetMultifiberResult(string partNumber)
{
var list = db.MultifiberResults.Where(s => s.PartNumber.Equals(partNumber, StringComparison.OrdinalIgnoreCase)).ToList();
return Ok(list);
}
否则,您的代码很好。您需要对其进行调试并向我们展示结果,并确保数据库或参数值中没有前导或尾随空格;在这种情况下,你应该.Trim()
两者兼而有之。
推荐阅读
- sql - 根据其他列中的条件更改 RANK() 的结果
- wordpress - 搜索 SKU 时不显示搜索结果
- c# - Microsoft Visual Studio Ultimate 2012 版本 11.0.50727.1 中没有“添加新表”选项
- go - 构造奇怪的行为
- angular - 将构建代理作为服务运行时,Chrome Headless 在 CI 上失败
- manifest - YAML 解组错误无法将 !!str ` ` 解组为 str
- matlab - 每当我在 MATLAB 脚本中打开任何其他文件时,都会出现错误“尝试将 SCRIPT sum 作为函数执行”
- bash - Vagrant:如何从私有存储库中运行我的 Vagrantfile 中的配置脚本?
- react-native - 如何在本机反应中将箭头图标中心设置为列表项中的屏幕结尾
- google-sheets - 如何在 Google 表格中循环直到条件