当List<short?>为null无需过滤时,IQueryable扩展方法应返回什么?
问题解答
当参数List<short?> lastPriceDocs为null时,直接返回原IQueryable<CustItemTrades>对象trades即可,这样不会对原查询添加任何过滤条件,完全符合“无需过滤”的需求。
修正后的完整代码如下:
public static IQueryable<CustItemTrades> SeriesIdFilter(this IQueryable<CustItemTrades> trades, List<short?> lastPriceDocs) => lastPriceDocs != null ? trades.Where(c => lastPriceDocs.Contains(c.SeriesId)) : trades;
补充说明
- 返回原查询对象是LINQ扩展方法的常规设计思路,能保持查询链的连续性,不影响后续的其他查询操作。
- 要是返回空的
IQueryable(比如trades.Take(0)),反而会错误过滤掉所有数据,和需求相悖。
内容的提问来源于stack exchange,提问作者Sotiris
相关产品推荐
相关产品推荐

