如果Linq的字段为空,如何替换值?

Sam*_*tar 3 c# linq

我有以下报告:

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
                });
Run Code Online (Sandbox Code Playgroud)

如果存在Order为null或空的记录,则会失败.有没有办法,如果m.Order为null或为空,我可以替换8个零的字符串,并为所有Order.Substrings替换一个零?

nem*_*esv 7

您可以使用null-coalescing运算符:

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
                                };
                });
Run Code Online (Sandbox Code Playgroud)