当LINQ中的列为空时,如何用空格替换" - "

use*_*181 0 c# linq select string-concatenation

这里我在Linq查询下面有员工持续时间列.当StartDateEndDate为null 时,如何删除" - " .只有当两者都不为空时我才想要" - ".

var query = from r in db.Employee 
            select new 
            {
                Name = r.Name,
                EmployeeDuration = r.StartDate +" - "+ r.EndDate
            }
Run Code Online (Sandbox Code Playgroud)

NtF*_*reX 5

您可以使用条件运算符.

var query = from r in db.Employee 
        select new 
        {
            Name = r.Name,
            EmployeeDuration = r.StartDate != null && r.EndDate != null 
                ? r.StartDate + " - " + r.EndDate
                : r.StartDate ?? r.EndDate
        }
Run Code Online (Sandbox Code Playgroud)

产量

When nothing is null   = 18.01.2017 18:00 - 18.01.2017 19:00
When StartDate is null = 18.01.2017 19:00
When EndDate is null   = 18.01.2017 18:00
Run Code Online (Sandbox Code Playgroud)

或者另一种方法就是这样.

var query = from r in db.Employee 
        select new 
        {
            Name = r.Name,
            EmployeeDuration = 
                (r.StartDate ?? "?") +
                " - " +
                (r.EndDate ?? "?")
        }
Run Code Online (Sandbox Code Playgroud)

产量

When nothing is null   = 18.01.2017 18:00 - 18.01.2017 19:00
When StartDate is null = ? - 18.01.2017 19:00
When EndDate is null   = 18.01.2017 18:00 - ?
Run Code Online (Sandbox Code Playgroud)