c# - 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();
解决方案
用于?
在执行下一个方法之前查看值是否为空。
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
推荐阅读
- java - 为什么@DecimalMin 会产生 ConstraintViolationException?
- ios - 处理消息视图
- python - 如何在 pandas/csv 文件中使用 if 语句
- c# - 无法将 fileupload.postedfile.inputstream 作为附件发送 - 错误:无法将 system.io.stream 转换为字符串
- php - 如果将 db 值分配给文本框并在下一页上获取 i 后条件未在 php 中执行
- android - Android Espresso Recording Assert for ImagesView in list View
- android - 从 FragmentActivity 使用“id”作为“startActivityForResult”的 requestCode
- django - 在同一字段Django中查询多个
- react-native - 在 React Native 中使用大数据实现搜索功能
- msbuild - 仅当项目或依赖项在 Azure devop 中发生更改时才构建