0
我有以下代码:方法组过滤器的空值
IEnumerable<DestinationResult> destinations =
_repository.GetDestinationData();
IEnumerable<Destination> finalDestinations =
destinations.Select(GetAdditionalDestinationInfo);
private Destination GetAdditionalDestinationInfo(DestinationResult d){ /* CODE */}
如何仍可以使用该方法的群组通话(选择(GetAdditionalDestinationInfo)),并筛选出可能从GetAdditionalDestinationInfo返回空值(不必须再次调用该方法来检查where子句中的空值)。
喜欢的东西:
IEnumerable<Destination> finalDestinations =
destinations.Select(GetAdditionalDestinationInfo != null)
为什么?为什么你想避免匿名方法/ lambda? – Luaan
如果你在当前选择之后添加一个地方,你会在'GetAdditionalDestinationInfo'的结果上调用它,函数本身不会被称为额外的时间(不需要像ToList那样进行多次枚举) ,所以你可以安全地执行'destinations.Select(GetAdditionalDestinationInfo).Where(res => res!= null);' –
或者你正在寻找一个使用原始目的地的枚举,如果'GetAdditionalDestinationInfo'返回null(这可以完成with'destinations.Select(d => GetAdditionalDestinationInfo(d)?? d)')然后再次,默认可以返回GetAdditionalDestinationInfo本身 –