【发布时间】:2017-04-18 19:03:46
【问题描述】:
我有旧代码要支持。 NHibernate 用于查询数据库。有 NHibernate LINQ 查询,如 IQueryOver.Where 等。它工作正常,但我想将这些查询用于本地序列。在 Microsoft LINQ 中有方法 Enumerable.AsQueryable。 NHibernate LINQ中是否有类似的东西?
所以我有这个。
private IQueryOver<Package> GetPackages(GetPackageMessage message)
{
var query = SessionFactory.Current.QueryOver<Package>();
if (message.TzapUtc.Use)
{
query = query.Where(x => x.Tzap_utc >= message.TzapUtc.ValueBegin);
}
if (message.Iik.Use)
{
query = use ? query.Where(x => x.Iik == message.Iik.Value);
}
}
我需要将所有这些 Where 应用到我的本地集合 IEnumerable
而不是从 DB 中收集。
【问题讨论】:
-
IQueryOver 公开了一个 NHibernate-
IQueryable-like 结构,如果我记得的话。所以两者已经有些相似了。也就是说,对于大多数项目,您最好直接切换到实体框架而不是 linq-to-sql。 -
@DavidL, queryover 仅使用与 Linq 相同的 lambda,但没有别的。它们是不兼容的 API。有关更多详细信息,请参阅下面的答案。
标签: c# .net linq nhibernate linq-to-sql