我的LINQ to SQL查詢string.Contains與LINQ to SQL中返回一個空例外
PROJETS = PROJETS.Where(p => (p.VilleArrive != "" && p.VilleArrive != null) && p.VilleArrive.Contains(alerte.VilleArrive));
被翻譯這樣
SELECT * // (many columns)
FROM [dbo].[cov_Projet] AS [t0]
WHERE ([t0].[VilleArrive] <> @p0) // city != ""
AND ([t0].[VilleArrive] IS NOT NULL) // city != null
AND ([t0].[VilleArrive] LIKE @p1) // city.contains(alert.city)
ORDER BY [t0].[DateDebut]
當我手動運行到SQL Server這是很好的執行。但是它在由linq執行時會返回一個ArgumentNullException異常。 實際上,測試「VilleArrive」(「城市」)的列不會爲空,但總是一個空字符串
我真的不明白它爲什麼附加。 我的問題看起來像這個LINQ to SQL and Null strings, how do I use Contains? 但答案不適用於我。
「喜歡」關鍵字似乎調用Linq.SqlClient.SqlHelpers.GetStringContainsPattern(字符串文字,字符轉義)
謝謝您的幫助,對不起我的英語。
這裏堆棧跟蹤我的項目是一個ASP MVC 1.0項目
System.ArgumentNullException是 由用戶代碼消息=「拉 valeur NE peut PAS理由空。\ r \ nNom 杜paramètre未處理:文本」
源= 「將System.Data.Linq」
PARAMNAME = 「文本」 堆棧跟蹤: àSystem.Data.Linq.SqlClient.SqlHelpers.GetStringContainsPattern(字符串 文本,字符逃逸) àSystem.Data。 Linq.SqlClient.PostBindDotNetCon verter.Visitor.TranslateStringMethod(SqlMethodCall MC) àSystem.Data.Linq.SqlClient.PostBindDotNetConverter.Visitor.VisitMethodCall(SqlMethodCall MC) àSystem.Data.Linq.SqlClient.SqlVisitor.Visit(SqlNode 節點) à System.Data.Linq.SqlClient.SqlVisitor.VisitExpression(SqlExpression EXP) àSystem.Data.Linq.SqlClient.SqlVisitor.VisitBinaryOperator(SqlBinary BO) àSystem.Data.Linq.SqlClient.PostBindDotNetConverter.Visitor.VisitBinaryOperator( SqlBinary bo) àSystem.Data.Linq.SqlClient.SqlVisitor.Visit(SqlNode node) àSystem.Data.Lin q.SqlClient.SqlVisitor.VisitExpression(SqlExpression EXP) àSystem.Data.Linq.SqlClient.SqlVisitor.VisitSelectCore(一個SQLSelect 選擇) àSystem.Data.Linq.SqlClient.PostBindDotNetConverter.Visitor.VisitSelect(一個SQLSelect 選擇) àSystem.Data.Linq.SqlClient.SqlVisitor.Visit(SqlNode 節點) àSystem.Data.Linq.SqlClient.SqlVisitor.VisitAlias(SqlAlias 一個) àSystem.Data.Linq.SqlClient.SqlVisitor.Visit( SqlNode 節點) àSystem.Data.Linq.SqlClient.SqlVisitor.VisitSource(SqlSource 源) àSystem.Data.Linq.SqlClient.SqlVisitor.VisitSelectCore (一個SQLSelect 選擇) àSystem.Data.Linq.SqlClient.PostBindDotNetConverter.Visitor.VisitSelect(一個SQLSelect 選擇) àSystem.Data.Linq.SqlClient.SqlVisitor.Visit(SqlNode 節點) à將System.Data.Linq .SqlClient。SqlVisitor.VisitUnion(SqlUnion SU) àSystem.Data.Linq.SqlClient.SqlVisitor.Visit(SqlNode 節點) àSystem.Data.Linq.SqlClient.SqlVisitor.VisitAlias(SqlAlias 一個) àSystem.Data。 Linq.SqlClient.SqlVisitor.Visit(SqlNode 節點) àSystem.Data.Linq.SqlClient.SqlVisitor.VisitSource(SqlSource 源) àSystem.Data.Linq.SqlClient.SqlVisitor.VisitSelectCore(一個SQLSelect 選擇) à System.Data.Linq.SqlClient.PostBindDotNetConverter.Visitor.VisitSelect(SqlSelect select) àSystem.Data.Linq.SqlClient.SqlVisitor.Visit(SqlNode 節點) àSystem.Data.Linq.SqlClient.SqlProvider.BuildQuery(ResultShape resultShape,類型與resultType,SqlNode 節點,ReadOnlyCollection1 parentParameters, SqlNodeAnnotations annotations) à System.Data.Linq.SqlClient.SqlProvider.BuildQuery(Expression query, SqlNodeAnnotations annotations) à System.Data.Linq.SqlClient.SqlProvider.System.Data.Linq.Provider.IProvider.GetQueryText(Expression query) à System.Data.Linq.DataQuery
1.ToString() àcovCake.Services.ProjetAlerts.RetrieveProjectsByUsers(布爾 UpdateAlerts)丹斯 d:\ AspProject \ covCake \ covCake \服務\ ProjetAlerts.cs:LIGNE àcovCake.Controllers.AlertesController.SendAlertEmail(字符串 p)丹斯 d:\ AspProject \ covCake \ covCake \控制器\ AlertesController.cs: ligne àlambda_method(ExecutionScope,ControllerBase,Object []) àSystem.Web.Mvc.ActionMethodDispatc her.Execute(ControllerBase 控制器,對象[]參數) àSystem.Web.Mvc.ReflectedActionDescriptor.Execute(ControllerContext controllerContext,IDictionary的2 parameters) à System.Web.Mvc.ControllerActionInvoker.InvokeActionMethod(ControllerContext controllerContext, ActionDescriptor actionDescriptor, IDictionary
2個 參數) àSystem.Web.Mvc.ControllerActionInvoker。 <> c__DisplayClassa.b__7() àSystem.Web.Mvc.ControllerActionInvoker.InvokeActionMethodFilter(IActionFilter 濾波器,ActionExecutingContext preContext,Func`1續)
的InnerException: