我正在尝试使用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