c#从存在或创建的查询中获取信息

时间:2018-05-10 16:20:21

标签: c# linq

我有以下LINQ查询:

var sysExist = db.Systems.FirstOrDefault(s => s.Name == name && 
s.OrganizationID == 4);

if (sysExist == null)
{
   var sys = db.Systems.Add(new Systems()
   {
      Name = name,
      OrganizationID = 4,
      Online = true,
      SerialNumber = "1zz34343" 
   });

   db.Systems.Add(sys);
   db.SaveChanges();
}

如果记录存在,我需要从sysExist获取ID字段。如果记录不存在,我需要获取添加的记录的ID字段(sys)。想知道有一种更有效的方法来做这个,而不是看两个变量来查看ID是什么。

2 个答案:

答案 0 :(得分:2)

重新使用sysExist而不是创建新的sys

var sysExist = db.Systems.FirstOrDefault(s => s.Name == name && s.OrganizationID == 4);

if (sysExist  == null)
{
   sysExist = new Systems()
   {
     Name = name,
     OrganizationID = 4,
     Online = true,
     SerialNumber = "1zz34343" 
   };

   db.Systems.Add(sysExist);
   db.SaveChanges();
}

// now sysExist contains old or new record

答案 1 :(得分:0)

var sys = db.Systems.FirstOrDefault(s => s.Name == name && 
s.OrganizationID == 4);

if (sys  == null)
{
   sys = new Systems()
   {
     Name = name,
     OrganizationID = 4,
     Online = true,
     SerialNumber = "1zz34343" 
   };

   db.Systems.Add(sys);
   db.SaveChanges();

然后使用sys您需要获取ID