首页 > 解决方案 > LINQ:空值检查 string.Format()

问题描述

我需要获取名字、中间名和姓氏的第一个字母。如果每个字段都包含值,则它正在工作。但中间名是可为空的字段。所以如果中间名的值为空,我会收到错误消息。

(from P in this._dbContext.Person
                     where P.PersonIndex == personIndex
                     select new PersonInitialsDTO
                     {
                         PersonIndex = P.PersonIndex,
                         PersonInitials = string.Format("{0}{1}{2}", P.FirstName.ToUpper().First(), P.MiddleName.ToUpper().First(), P.LastName.ToUpper().First())
                     }).FirstOrDefault();      

标签: c#linq

解决方案


用于?在执行下一个方法之前查看值是否为空。

string.Format("{0}{1}{2}", P.FirstName.ToUpper().First(), P.MiddleName?.ToUpper().First(), P.LastName.ToUpper().First())

P.MiddleName?.ToUpper().First()-> 如果P.MiddleName为空,之后不要执行 ToUpper() 或任何其他方法。


的使用示例?在 string.format 语句中

Pers person = new Pers()
{
    First = "First",
    Last = "Last"
};
Console.WriteLine(string.Format("{0}{1}{2}", person.First.First(), person.Middle?.ToUpper().First(), person.Last.First()));

// Prints
FL

推荐阅读