繁体   English   中英

LINQ - .Split(new [] {''})字符串,如果找到null则设置默认值

[英]LINQ - .Split(new[] { ' ' }) string and set default value if found 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为null,则返回“Unknown”。 怎么办呢?

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

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

如果A.LogOutTimenull ,则它将使用"Unknown" 这稍微低效,因为它将在我们知道不需要Split的字符串上调用Split ...在C#6中,您可以使用null条件运算符:

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

这里,如果A.LogOutTimenull ,则不会对Split进行求值,并且表达式中该部分的结果将为null - 然后在结尾处使用null合并运算符。

顺便说一下,不是每次都创建一个新的char[] ,你可能只有一个静态字段:

private static readonly ArrayWithSpace = new[] { ' ' };

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM