我创建了一个小测试类,它返回xml文件中的数据.
我现在想要使用linq使其更具动态性,但无法使其工作.
public class LenderCollection
{
string fileName = "C:\\Lenders.xml";
public IEnumerable<Lender> Lenders { get; set; }
public void FetchLenders(Expression<Func<Lender, bool>> predicate = null)
{
IEnumerable<Lender> lenders = XmlHelper.GetObjectFromXml<List<Lender>>(fileName, "AllLenders");
Lenders = predicate.IsNotNull() ? lenders.Where(predicate) : lenders;
}
}
Run Code Online (Sandbox Code Playgroud)
Visual Studio在"lenders.Where(谓词)"部分给出错误 - 消息是"...不包含Where ...的定义"
我有什么想法我做错了吗?
*更新*
它似乎与谓词有关 - .否则就是可用的.
没有扩展方法Where可以扩展IEnumerable<T>并获取类型参数Expression<Func<T, bool>>.
您有两种选择:
如果你想保持参数为,那么使用an IQueryable<Lender>代替IEnumerable<Lender>(你只需通过调用即可.AsQueryable())predicateExpression<Func<Lender, bool>>
使用的类型Func<Lender, bool>,而不是Expression<Func<Lender, bool>>为predicate参数.由于您是从文件加载数据,因此使用IQueryableover 文件是没有意义的IEnumerable.
| 归档时间: |
|
| 查看次数: |
162 次 |
| 最近记录: |