林克 - .拆分(new[] { }) 字符串,如果发现 null,则设置默认值



这是我的LINQ查询

var listLogOutItems = 
    (from A in data 
     orderby A.FirstName 
     select new { 
         Login = "Logout",
         Name = A.FirstName + " " + A.SurName,
         ID = A.Id,
         LogoutDate = A.LogOutTime.Split(new[] { ' ' }, StringSplitOptions.RemoveEmptyEntries)[0]
     }).Distinct();

如果A.LogOutTime为空,则返回"Unknown"。怎么能做到呢?

最简单的方法可能是使用空合并运算符??

LogoutDate = (A.LogOutTime ?? "Unknown").Split(...)[0]

如果A.LogOutTimenull,它将使用"Unknown"代替。这有点低效,因为它将在一个我们知道不需要拆分的字符串上调用Split…在c# 6中,你可以使用空条件运算符来代替:

LogoutDate = A.LogOutTime?.Split(...)[0] ?? "Unknown" 

在这里,如果A.LogOutTimenull, Split不会被求值,那部分表达式的结果将是null——那么空合并操作符只在末尾使用。

作为题外话,与其每次都创建一个新的char[],不如只使用一个静态字段:
private static readonly ArrayWithSpace = new[] { ' ' };

然后在每次调用Split时重用它

相关内容

最新更新