2013-09-24 17 views
2

我想選擇的GUID範圍與NHibernate:選擇的Guid範圍NHibernate的where子句

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不允許我進行比較的GUID:

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

謝謝所有

+0

你的代碼比較字符串,不是的GUID,雖然比較運營商也沒有對GUID的定義,因爲他們並沒有太大的意義有兩種。 –

+0

我知道我在比較字符串,但沒有其他比較Guids的方法。我正在尋找替代方案或如何以正確的方式執行此操作 – setlio

+0

您可以計算已處理的記錄並使用跳過(已處理) – Firo

回答

2

this answer你可以嘗試更換這行:

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

有:

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

根據你的數據庫整理,在IgnoreCase可能是無用的。

希望這將有助於