我有一个方法接受一个连接到它的属性列表的变量。我需要做的是创建一个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;
}
答案 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);