MVC LINQ测试库

时间:2013-10-04 13:20:07

标签: c# asp.net-mvc linq

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

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();
}

我基本上想要返回一个过滤的记录列表,其中&#34; action&#34;条件是真的。

我收到以下错误

  

错误2实例参数:无法转换为&#39; System.Collections.Generic.List&#39;到了System.Linq.IQueryable&#39;

请帮忙。

2 个答案:

答案 0 :(得分:3)

您需要使用IEnumerable<T>版本的Where,其中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();
    }
}

答案 1 :(得分:0)

据我了解,您无法将List的{​​{1}}转换为通用类型  你应该做thisthis

之类的事情