我正在嘗試使用LINQ進行NHibernate搜索。Linq to nhibernate sql 1 = 1等效
我有這樣的代碼:
from d in rep.QueryAll<Document>()
where
d.Plata != null && d.Contractant != null && d.Stadiu == StadiuDocument.Polita
&& (d.NrPolita.Contains(query) ||
d.Contractant.CodUnic.Contains(query) ||
d.Contractant.Denumire.Contains(query) ||
d.Plata.IdTranzactie.Contains(query)) &&
((TipPolita != null) ? (d.Tip == (TipProdus)TipPolita) : (1 == 1)) &&
((StareDocument != null) ? (d.Stare == (StareDocument)StareDocument) : (1 == 1))
select new
{
的問題是,我有一個具有普遍價值的一些選擇輸入。事情是這樣的:
<select id="tippolita" >
<option value = "-1">Any value</option>
<option value = "1">Value 1</option>
<option value = "2">Value 2</option>
<option value = "3">Value 3</option>
</select>
所以,當「任何價值」被選中就像我寫到這裏的where
說法應該是真實的:
((TipPolita != null) ? (d.Tip == (TipProdus)TipPolita) : (1 == 1)) &&
((StareDocument != null) ? (d.Stare == (StareDocument)StareDocument) : (1 == 1))
這幾乎是一樣的我會在SQL編寫。
錯誤NHibernate的源代碼的內部,在線路33上的文件「的LINQ \ NHLinqExpression.cs」
_expression = PartialEvaluatingExpressionTreeVisitor.EvaluateIndependentSubtrees(expression);
此錯誤實際上來自重新LINQ庫中出現。
一個明顯的解決方法是隻寫3個if語句,並在其中添加適當的LINQ查詢,但這意味着需要編寫更多的代碼。
有什麼辦法可以使這種查詢工作,而無需複製粘貼整個查詢並修改它的一小部分?
P.S.
這是內部異常:
InnerException: System.NullReferenceException
Message=Object reference not set to an instance of an object.
Source=Anonymously Hosted DynamicMethods Assembly
StackTrace:
at lambda_method(Closure
)
試過1 == 1 =>同樣的問題 – Para 2011-01-20 09:38:18