使用Linq从列表中过滤null属性

时间:2016-03-01 15:26:03

标签: c# linq list methods

我有一个方法接受一个连接到它的属性列表的变量。我需要做的是创建一个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。我需要选择地址为null的每个名称并将其添加到列表中。但是正如你猜测的那样,下面的LINQ代码不起作用而且只是打破了。

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

        return NullItems;
    }

2 个答案:

答案 0 :(得分:3)

   public Name[] FilterAddress(Name name)
    {
        return name.Where(x => string.IsNullOrEmpty(x.Addresses))
                                .Select(x => x.Name)
                                .ToArray();
    }

答案 1 :(得分:-2)

如果Adresses为null,则只需在查询中添加“if null”检查即可返回。

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