我有以下报告:
var menuItems = _menuRepository.GetPk(pk)
.Where(m => m.Status == "00")
.OrderBy(m => m.Order)
.Select(m => new MenuItem
{
PartitionKey = m.PartitionKey,
RowKey = m.RowKey,
Order = m.Order,
Order1 = m.Order.Substring(0, 1),
Order2 = m.Order.Substring(2, 1),
Order3 = m.Order.Substring(4, 1),
Order4 = m.Order.Substring(6, 2),
Title = m.Title,
Type = m.Type,
Link = m.Link,
TextLength = m.TextLength
});
如果有些记录的 Order 为 null 或为空,则此操作失败。如果 m.Order 为 null 或为空,有没有一种方法可以替换 8 个零的字符串,并用一个零替换所有 Order.Substrings?
最佳答案
您可以使用 null-coalescing运算符(operator):
var menuItems = _menuRepository.GetPk(pk)
.Where(m => m.Status == "00")
.OrderBy(m => m.Order)
.Select(m =>
{
var orderOrEmpty = m.Order ?? "00000000";
return new MenuItem
{
PartitionKey = m.PartitionKey,
RowKey = m.RowKey,
Order = m.Order,
Order1 = orderOrEmpty.Substring(0, 1),
Order2 = orderOrEmpty.Substring(2, 1),
Order3 = orderOrEmpty.Substring(4, 1),
Order4 = orderOrEmpty.Substring(6, 2),
Title = m.Title,
Type = m.Type,
Link = m.Link,
TextLength = m.TextLength
};
});
关于c# - 如果一个字段为空,我如何用 Linq 替换一个值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9446262/