【问题标题】:Filter null properties from list using Linq使用 Linq 从列表中过滤空属性
【发布时间】:2016-03-01 15:26:02
【问题描述】:

我有一个方法,它接受一个变量,该变量具有与其连接的属性列表。我需要做的是创建一个 linq 查询,它将当前进入的变量标记为缺少“地址”并将其添加到列表中。

    public void Teachers(List<Teacher> teachers)
    {
        foreach (Name name in teachers)
        {
            int age = program.CalculateAge(name.BirthDate.Year);

            Name address = FilterAddress(name);

            // Output Teachers Name - First Name, Last Name
            if (name.Type.Equals(Name.NameType.Teacher))
            {
                OutputToConsole(name.FirstName, name.LastName, age);
                program.WriteAddress(name);
            }
        }
        Console.WriteLine();
    }

上面是将foreach循环中的当前变量添加到FilterAddress方法的方法。下面是传递变量的位置。此变量有一个名为“Address”的 List 属性与之相连。该地址可以为空。我需要选择地址为 null 的每个名称并将其添加到列表中。但正如您猜到的那样,我下面的 LINQ 代码不起作用,只是中断了。

    public Name FilterAddress(Name name)
    {
        var NullItems = name.Select(x => x.Addresses).OfType<Name>();

        return NullItems;
    }

【问题讨论】:

    标签: c# linq list methods


    【解决方案1】:
       public Name[] FilterAddress(Name name)
        {
            return name.Where(x => string.IsNullOrEmpty(x.Addresses))
                                    .Select(x => x.Name)
                                    .ToArray();
        }
    

    【讨论】:

    • @Travis 这是另一个问题,创建一个新问题。
    【解决方案2】:

    只需要在查询中添加“if null”检查即可返回 if Adresses 是否为空。

    var NullItems = name.Where(x => x.Addresses == null);
    

    【讨论】:

    • 那肯定不会编译
    猜你喜欢
    • 2021-12-28
    • 1970-01-01
    • 2014-04-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-07-02
    相关资源
    最近更新 更多