在NHibernate where子句中选择Guid范围

时间:2013-09-24 00:04:02

标签: c# .net linq nhibernate

我正在尝试使用NHibernate选择Guids范围:

 customersToUpdate =
                    Session.QueryOver<Customer>()
                           .Where(x => x.SyncEndpointTick > localTick && x.SyncEndpointTick <= endTick).OrderBy(x => x.Id).Asc
                           .Where(x=> x.Id.ToString().ToLower() > lastResultId.ToString().ToLower())
                           .ConvertTo<List<Customer>>();

问题是LINQ不允许我比较Guids:

.Where(x=> x.Id.ToString().ToLower() > lastResultId.ToString().ToLower())

谢谢大家

1 个答案:

答案 0 :(得分:2)

来自this answer

您可能会尝试替换此行:

.Where(x=> x.Id.ToString().ToLower() > lastResultId.ToString().ToLower())

with:

.Where(Restrictions
        .Gt(Projections.Cast(NHibernateUtil.String, Projections.Property("Id")),
            lastResultId.ToString()).IgnoreCase())

根据您的数据库归类,IgnoreCase可能无用。

希望这会有所帮助