> 谓词)与一个什么都不做的谓词?,c#"/>

首页 > 解决方案 > 如何调用函数(表达式> 谓词)与一个什么都不做的谓词?

问题描述

我有这个方法:

public async Task<List<T>> GetDocumentItemsAsync<T>(Expression<Func<T, Boolean>> predicate) where T : class

我正在调用这样的方法:

var Views = await cosmosManager.GetDocumentItemsAsync<LogViews>(x => x.Activity == "Crash");

现在有一种情况,我根本不想进行任何检查,也不想检查 Activity 的值。

有没有一种方法可以调用该方法,因为当我尝试将参数留空时会收到一条错误消息。

标签: c#

解决方案


您可以使用空对象模式。提供和重载看起来像这样:

public async Task<List<T>> GetDocumentItemsAsync<T>() where T : class
{
    return await GetDocumentItemsAsync<T>(t => true);
}

不幸的是,您不能只将原始参数默认为 t => true,因为 lambda 不是编译时间常数。

我假设您希望默认为true,但同样您也可以做到false


推荐阅读