避免null进入列表

Ros*_*per 2 .net c# lambda list anonymous-methods

请参阅下面的代码

1. persons = Items.Select(item => componentResolver.ResolvePerson(new TridionUri(item.Id))).ToList();
2. persons.Each(person => person.AdditionalInfo); // gives null reference exception
Run Code Online (Sandbox Code Playgroud)

ResolvePerson看起来像:

public Person ResolvePerson(TridionUri personUri)
{
    Person person = publicationResolverService.GetPerson(personUri);
    if (author != null)
    {
        person.Id = personUri.ItemId.ToString();
    }
    return person;
}
Run Code Online (Sandbox Code Playgroud)

现在的问题是,"项目"包含一个人不存在的ID.所以我的'ResolvePerson'返回null.这导致第2行中的例外.我只能控制ResolvePerson方法.有没有办法可以跳过没有人在场的personUri而不是返回null?

Kam*_*ski 5

您可以使用Wherefrom Linq来过滤空人

persons.Where(person => person != null).Each(person => person.AdditionalInfo);
Run Code Online (Sandbox Code Playgroud)