linq-to-sql有条件地更新

fre*_*hie 2 c# linq-to-sql

我有一个更新记录的查询; 看起来有点像这样:

public void SaveRecord(int TheUserID, Nullable<DateTime> TheDate,
                                                  Nullable<int> TheAction)
    {
      using DC...
      {
         var TheRecordToUpdate = (from....where ....
                                  select l).Single();

         TheRecordToUpdate.TheDate = TheDate;
         TheRecordToUpdate.TheAction = TheAction;

         TheDC.SubmitChanges();
Run Code Online (Sandbox Code Playgroud)

问题是有时我提供空参数,在这种情况下,我不想更改数据库中的字段.我该如何使用?参数为null时linq-to-sql中的运算符?

谢谢.

Roe*_*elF 5

你可以使用??运营商

TheRecordToUpdate.TheDate = TheDate ?? TheRecordToUpdate.TheDate ;
Run Code Online (Sandbox Code Playgroud)

或者如果你想更明确地写它

if (TheDate.HasValue){
    TheRecordToUpdate.TheDate = TheDate;
}
Run Code Online (Sandbox Code Playgroud)

如果TheRecordToUpdate.TheDate不是可以为空的属性,你必须写

if (TheDate.HasValue){
    TheRecordToUpdate.TheDate = TheDate.Value;
}
Run Code Online (Sandbox Code Playgroud)