C#如果找不到元素,则其他内容

时间:2018-11-22 07:13:25

标签: c# linq

我有一张简单的桌子

enter image description here

这是我的代码的摘要。

var person = db.Person.Where(p => p.ID == inputId).Select(o => o.ID).FirstOrDefault();

返回人;

inputId是用户输入字段。我需要的是,如果inputId不在表中(例如5、6、7等),我希望使用if / else选项来创建新用户/重新输入正确的ID。

谢谢

4 个答案:

答案 0 :(得分:5)

null-coalescing运算符是一种方式

var person = db.Person.FirstOrDefault(p => p.ID == inputId) ?? new Person();

答案 1 :(得分:2)

首先,您返回ID,而不是人员。要返回一个人,您应该这样做:

var person = db.Person.FirstOrDefault(p => p.ID == inputId);

对于这个问题,我希望使用此选项:

if (db.Person.FirstOrDefault(p => p.ID == inputId) is Person person)
{
    //...
}

答案 2 :(得分:0)

首先选择记录

var person = db.Person.FirstOrDefault(p => p.ID == inputId);
if(person == null) //check if not exist 
{
  //add
  db.Person.Add(PersonDetails);
  db.SaveChanges(); 
}
// else return person object 
return person; 

答案 3 :(得分:-1)

您可以使用.Any()方法检查记录的存在:

if(db.Person.Any(p => p.ID == inputID))
{
   return db.Person.First(p => p.ID == inputID);
}
else
{
   //Set user notification message
}