2011-12-20 50 views
3

我試圖做這樣的事情:如何比較字符串與nhibernate?

Session.Query<VoiceMailNumber>() 
      .Where(x => (x.From.CompareTo(number) > 0) && 
        (x.To.CompareTo(number)) > 0) 

但拋出System.NotSupportedException。

從和數字都是字符串。

任何解決方案?

+1

定義「不起作用」,它拋出了傳說中的'DoesntWorkException',它做了什麼? – 2011-12-20 12:43:47

+0

編號System.NotSupportedException – Anders 2011-12-20 12:45:52

+2

恕我直言nhibernate不能「將CompareTo()函數轉換爲sql語句」所以請嘗試'x.From == number' – Reniuz 2011-12-20 12:46:42

回答

1

這解決了它:

Session.CreateCriteria(typeof(VoiceMailNumber)) 
       .Add(Expression.Le("From", number)) 
       .Add(Expression.Ge("To", number)) 
       .UniqueResult<VoiceMailNumber>(); 

我不是超級本解決方案快樂,但由於無法使用查詢或查詢來比較字符串,因此必須這樣做。

0

您可以準確地使用此語法比較字符串:

Session.Query<VoiceMailNumber>() 
    .Where(x => x.From==number) 
    .And(x=>x.To==number); 

翻譯爲:

select * from VoiceMailNumber where From='123456' and To='123456' 
+2

是的。但我不想檢查它們是否相同。 – Anders 2011-12-21 09:05:06

+0

你想用什麼SQL函數進行比較? – 2011-12-21 11:32:23