You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

C#调用FirstOrDefault()是否返回null?如何强制无匹配时返回null?

问题解答

你不需要做任何额外配置就能实现未匹配到记录时返回null的需求,你混淆了两个完全独立的逻辑:

  • 数据库表的not null约束只限制单条记录存入数据库时,对应字段不能为null,和查询不到记录时EF的返回值没有任何关联
  • 你代码中FirstOrDefault()的TSource是ResultTable对应的实体类,属于引用类型,引用类型的默认值本身就是null,只要没有匹配到记录,返回结果自然就是null

另外你当前代码存在两个可修复的问题:

  1. 字段名拼写错误:你代码里写的result.FinaName和实际表字段FileName不一致,会直接导致查询报错
  2. 字符串比较写法冗余:不需要用CompareTo方法判断等于,直接写where result.FileName == fileName即可,EF会自动将该判断转换为SQL层面的等值匹配,运行效率和可读性都更好

修改后的代码参考:

var resultSearch = DB.ContextManagement.ResultTable
    .FirstOrDefault(result => result.FileName == fileName);
if (resultSearch == null)
{
    // 未匹配到记录的逻辑
}
else
{
    // 匹配到记录的逻辑
}

内容的提问来源于stack exchange,提问作者rlnnclt

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.25 00:15:03