2

我正在为依赖注入创建一个测试存储库,下面有我的测试方法。

private List<object> records;

public IList<T> GetFiltered<T>(Expression<Func<T, bool>> action = null) where T : class
{
    return ((List<T>)records).Where(action).ToList();
}

我本质上想返回一个过滤的记录列表,其中“操作”条件为真。

我收到以下错误

错误 2 实例参数:无法从“System.Collections.Generic.List”转换为“System.Linq.IQueryable”

请帮忙。

4

2 回答 2

3

您需要使用Where不期望的IEnumerable<T>版本,例如Func<T, bool>IQueryable<T>Expression

public IList<T> GetFiltered<T>(Func<T, bool> action = null) where T : class
{
    return ((List<T>)records).Where(action).ToList();
}

另外,List<object>不能接受List<T>我的建议是使外部类也通用,即

public class MyContainer<T>
{
    private List<T> records;

    public IList<T> GetFiltered(Func<T, bool> action = null) where T : class
    {
        return records.Where(action).ToList();
    }
}
于 2013-10-04T13:24:00.077 回答
0

as i understand you can not just convert List of object to generic type you should do something like this or this

于 2013-10-04T13:29:24.320 回答