Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-mvc/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 在检查null之前,查询返回null的问题_C#_Asp.net Mvc_Linq - Fatal编程技术网

C# 在检查null之前,查询返回null的问题

C# 在检查null之前,查询返回null的问题,c#,asp.net-mvc,linq,C#,Asp.net Mvc,Linq,对于invite函数,我有一个屏幕,屏幕上只有一个字段,允许用户输入其他地方给他们的代码。然后我检查控制器以查看哪个记录与此代码关联。但我的问题是,如果代码不是第一种类型(类型1或类型2),则控制器会崩溃。所以这里是我认为应该是的样子(这不起作用),尽管我意识到我对c#是个新手 我曾尝试过其他版本,在这些版本中,我将对象检查放在if语句中,但也没有起作用。有什么想法吗?使用First或default而不是First。如果集合为空,First将引发异常;如果集合为空,FirstOrDefault将

对于invite函数,我有一个屏幕,屏幕上只有一个字段,允许用户输入其他地方给他们的代码。然后我检查控制器以查看哪个记录与此代码关联。但我的问题是,如果代码不是第一种类型(类型1或类型2),则控制器会崩溃。所以这里是我认为应该是的样子(这不起作用),尽管我意识到我对c#是个新手


我曾尝试过其他版本,在这些版本中,我将对象检查放在if语句中,但也没有起作用。有什么想法吗?

使用
First或default
而不是
First
。如果集合为空,First将引发异常;如果集合为空,FirstOrDefault将返回
default(T)

实际上,
First
FirstOrDefault
的重载采用了条件参数,因此您不需要调用
Where

例:

var x=numbers.FirstOrDefault(n=>n%2==1)

这将返回集合中的第一个奇数,如果没有满足条件(或根本没有),则返回0。

如所述,如果序列中没有元素,则此方法将引发异常

第一个(IEnumerable)方法在以下情况下引发异常: 源不包含任何元素。而是在以下情况下返回默认值: 源序列为空,请使用FirstOrDefault方法

所以你应该写

Record rec = db.Records.FirstOrDefault(u => u.Code1);
if(rec == null)
{
    ....
}
请注意,Where扩展中使用的相同条件可以直接用于FirstOrDefault

顺便说一下,不清楚你的表情是什么。lambda表达式(语法为=>)应该返回一个布尔值,因此,或者您的Code1是一个布尔变量,或者该行中有错误

  • 使用
    db.Records.Where(u=>u.Code1.FirstOrDefault()
  • 如果比较值在绑定到查询之前具有模型中的此属性,请检查比较值(例如,
    u.code1

  • 如果您预见查询将不返回任何元素,请使用FirstOrDefault Hanks Steve,我曾尝试过,但记得它不起作用。詹姆斯把它寄到了,但是如果你想把它寄到下面,你的是第一个——我会给你支票的。我刚看到你这么做。我必须等待6分钟first或default实际返回
    default(T)
    ()为了澄清,firstOrDefault将返回找到的第一个项目,如果没有找到,则返回默认值T。对于引用类型,这是null。
    Record rec = db.Records.FirstOrDefault(u => u.Code1);
    if(rec == null)
    {
        ....
    }