如何避免使用FirstOrDefault将对象引用未设置为对象错误的实例?

Lea*_*sed 5 .net c# linq asp.net-mvc

这是我的课:

public class Employee
{
     public int EmployeeId { get; set; }
     public int Skillssetpoints { get; set; }
     public string Name { get; set; }
     public string EmployeeCode { get; set; }
     public Nullable<System.DateTime> Date { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

码:

场景1

var data=context.Employee.ToList();  //Get all employee records.

//Filter records by employee code(Emp01) and fetch single employee code.for eg:Emp01

var empCode = data.FirstOrDefault(t =>(t.EmployeeCode.Trim() == Model.EmployeeCode.Trim())).EmployeeCode;
Run Code Online (Sandbox Code Playgroud)

在这里,如果找不到与匹配的Emp01对象,则错误对象引用不会设置为对象实例,而是通过以下代码修复了该问题:

var Single = data.FirstOrDefault(t =>(t.EmployeeCode.Trim() == Model.EmployeeCode.Trim()));

if(single!=null)
{
   var data=Single.EmployeeCode;
   //Rest other code.
}
Run Code Online (Sandbox Code Playgroud)

方案2

var data=context.Employee.ToList();  //Get all employee records.

//Fetch List of employee with Employee code:Emp01

var list= data.FirstOrDefault(t =>(t.EmployeeCode.Trim() == Model.EmployeeCode.Trim()));
Run Code Online (Sandbox Code Playgroud)

在这里,我的数据对象如有EmployeeCodenull话,我得到这个错误:

错误:对象引用未设置为对象实例

固定与此:

var list= data.FirstOrDefault(t => (t.EmployeeCode != null) && (t.EmployeeCode.Trim() == Model.EmployeeCode.Trim()));
Run Code Online (Sandbox Code Playgroud)

对于第二种情况,当我获取员工的所有记录并按员工代码进行过滤时,我首先没有添加此空值条件,因为我拥有的所有员工记录都没有任何空员工代码,并且一切正常,但是在任何时候员工代码变为null并收到此error.so以后我想避免此错误。

所以我只想知道有没有更好的方法来处理这两种情况?