这是我的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.LogOutTime
是null
,它将使用"Unknown"
代替。这有点低效,因为它将在一个我们知道不需要拆分的字符串上调用Split
…在c# 6中,你可以使用空条件运算符来代替:
LogoutDate = A.LogOutTime?.Split(...)[0] ?? "Unknown"
在这里,如果A.LogOutTime
是null
, Split
不会被求值,那部分表达式的结果将是null
——那么空合并操作符只在末尾使用。
char[]
,不如只使用一个静态字段:
private static readonly ArrayWithSpace = new[] { ' ' };
然后在每次调用Split
时重用它