c# - 如果一个字段为空,我如何用 Linq 替换一个值?

标签 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
                });

如果有些记录的 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/

相关文章:

c# - 在 LINQ WHERE 子句中有条件地允许 null

c# - 如何避免 linq 查询 C# 中的两个嵌入式循环

c# - 如何将 FirstOrDefault 与 Include 一起使用?

c# - 如何使用 LINQ Contains(string[]) 而不是 Contains(string)

c# - 如何在反向代理后面获取应用程序基本 url

c# - 用完全相同的代码合并 catch block ?

c# - 属性值中的 XPath 通配符

c# - 在函数中使用 LINQ

c# - 使用 C++ 在 C# 位图上绘制

c# - .NET:PasswordDeriveBytes 和 Rfc2898DeriveBytes 之间的区别