我正在为依赖注入创建一个测试存储库,我的测试方法如下。
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;
请帮忙。
答案 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)