【发布时间】:2011-02-16 13:07:00
【问题描述】:
我有一个名为ICatalog 的接口,如下所示,其中每个ICatalog 都有一个名称和一个方法,该方法将基于Predicate<Item> 函数返回项目。
public interface ICatalog
{
string Name { get; }
IEnumerable<Item> GetItems(Predicate<Item> predicate);
}
目录的特定实现可以链接到各种格式的目录,例如 XML 或 SQL 数据库。
使用 XML 目录,我最终将整个 XML 文件反序列化到内存中,因此使用谓词函数测试每个项目不会增加更多开销,因为它已经在内存中。
但对于 SQL 实现,我宁愿不将数据库的全部内容检索到内存中,然后使用谓词函数过滤项目。相反,我想找到一种方法以某种方式将谓词传递给 SQL 服务器,或者以某种方式将其转换为 SQL 查询。
这似乎是一个可以用 Linq 解决的问题,但我对它很陌生。我的界面应该返回 IQueryable 吗?我现在不关心如何实际实现我的 Icatalog 的 SQL 版本。我只是想确保我的界面将来可以使用它。
【问题讨论】:
标签: c# .net linq iqueryable