【发布时间】:2019-06-12 06:30:01
【问题描述】:
我对 Linq 和 EF 还很陌生。
字符串的比较有什么不正确的地方吗?
我已经尝试过String.Equals 或CompareTo,但它们返回boolean 值,我读到Linq 比较String == string 就像来自SQL 的WHERE statement。
public IHttpActionResult GetMultifiberResult(string partNumber)
{
var list = db.MultifiberResults.Where(s => s.PartNumber ==
partNumber).ToList();
return Ok(list);
}
list 应该返回一组值,其中来自 DB 的列 PartNumber 等于参数 partNumber。当我使用 int 比较进行搜索时,它确实在 int 列中找到匹配项,但在 varchar 列中找不到。控制器总是返回空,计数为 0。
【问题讨论】:
-
可能是
CHAR列,这种情况下需要使用Trim()方法 -
您是否在调试器中检查了
partNumber的值?可能是你有一些尾随空格或隐藏字符。价值从何而来?用户输入?文件?还有其他来源吗? -
也许您遇到了this 问题? (或至少它的一个变体)
-
代码看起来不错。您可以在创建
MultifiberResults的位置放置一个断点并手动检查该集合是否有一个您尝试匹配的 PartNumber 实例? -
请向我们展示您直接针对数据库运行的 SQL 语句,它返回了您想要的数据。
标签: c# entity-framework linq