2010-12-03 5 views
0

Je développe ceci dans ASP.NET MVC2Exception lors de l'exécution requête LINQ

Obtenir exception:

Object reference not set to an instance of an object 

System.NullReferenceException was unhandled by user code 
    Message="Object reference not set to an instance of an object." 
    Source="Anonymously Hosted DynamicMethods Assembly" 
    StackTrace: 
     at lambda_method(ExecutionScope , TrusteeMaster) 
     at System.Linq.Enumerable.WhereSelectEnumerableIterator`2.MoveNext() 
     at System.Linq.Buffer`1..ctor(IEnumerable`1 source) 
     at System.Linq.Enumerable.ToArray[TSource](IEnumerable`1 source) 
     at LexEyeSystem.Controllers.TrusteeMasterController.JsonContractCollection(Int32 page, Int32 rows, String sidx, String sord) in D:\ParallelMinds\Projects\LexEye\Controllers\TrusteeMasterController.cs:line 560 
     at lambda_method(ExecutionScope , ControllerBase , Object[]) 
     at System.Web.Mvc.ActionMethodDispatcher.Execute(ControllerBase controller, Object[] parameters) 
     at System.Web.Mvc.ReflectedActionDescriptor.Execute(ControllerContext controllerContext, IDictionary`2 parameters) 
     at System.Web.Mvc.ControllerActionInvoker.InvokeActionMethod(ControllerContext controllerContext, ActionDescriptor actionDescriptor, IDictionary`2 parameters) 
     at System.Web.Mvc.ControllerActionInvoker.<>c__DisplayClassd.<InvokeActionMethodWithFilters>b__a() 
     at System.Web.Mvc.ControllerActionInvoker.InvokeActionMethodFilter(IActionFilter filter, ActionExecutingContext preContext, Func`1 continuation) 
    InnerException: 

Je suis en train de montrer jqGrid, à cette fin, je dois écrire ce JSON action de retour, qui contient ma requête Linq. Même requête s'exécutant correctement sur d'autres pages:

var jsonData = new 
{ 
    total = totalPages, 
    page = page, 
    records = totalRecords, 
    rows = ( 
      from s in sortedList 
      select new 
      { 
       cell = new string[] {       
       "TrustContract/Edit/"+ s.TrusteeId.ToString(),       
       s.FullName, 
       s.OtherName.ToString(), 
       s.FatherName, 
       s.TrusteeGender, 
       s.ResidentialAddress, 
       s.CommunicationAddress, 
       s.Occupation, 
       s.Nationality, 
       s.DateOfBirth.Value.ToShortDateString(), 
       s.PlaceOfBirth, 
       s.TelephoneNumber, 
       s.FacsimileNumber, 
       s.MobileNumbers, 
       s.EmailId, 
       s.ElectionIdCardNumber, 
       s.PANCardNumber, 
       s.TaxRegistrationNumber, 
       s.Qualification, 
       s.ExperienceInYears.ToString(), 
       s.Resume.ToString(), 
       "DisclousureInterestDetails/Index/"+ s.TrusteeId.ToString(),//+"?trusteeId="+s.TrusteeId.ToString(), 
       "ForeignDetail/Create/"+ s.TrusteeId.ToString(), 
       "InterestedOtherCompanyInformation/Index/"+ s.TrusteeId.ToString(), 
       "RelativesDetails/Index/"+ s.TrusteeId.ToString() 

      } 
      }).ToArray() 
}; 

Mais pourquoi il ne devrait pas fonctionner ici?

Edit: requête LINQ pour obtenir SortedList:

var sortedList = objTrusteeMasterList 
        .AsQueryable() 
        .OrderBy(orderBy) // Uses System.Linq.Dynamic library for sorting 
        .Skip(pageIndex * pageSize) 
        .Take(pageSize); 
+0

Le problème est probablement lié à votre 'sortedlist' - quelle est la requête LINQ que vous utilisez pour cela? –

+0

S'il vous plaît voir la question éditée que j'ai donné requête Linq. Mais c'est donner des résultats appropriés. Il ne génère aucune exception Comme je l'ai débogué. Est-il possible de débuter le code que j'ai donné (Linq) par déclaration? –

+0

Pouvez-vous passer du temps à nettoyer votre code - il y a '
' à la fin de chaque ligne, et la première ligne n'est pas à 4 caractères indentés donc ce n'est pas du code, mais plutôt du texte. Cela rend la lecture difficile, et donc difficile pour nous de répondre. –

Répondre

1

Vérifiez si le SortedList en vous from s in sorteList est NULL ou non.

Je pense que l'exception est levée lorsque LINQ appelle la méthode MoveNext sur sortedList.

+0

Salut Unmesh, Merci pour la réponse. c'est fait. ce n'était pas un problème de liste triée ou de son objet contenant en fait! J'ai eu des valeurs nulles en db. donc, tout en obtenant de la valeur dans une instruction select comme "s.FullName.ToString()" ici devrait être Convert.ToString (s.FullName). et ça fonctionne parfaitement. mais vous préservez +1 –

0

J'ai eu le même problème. Si j'appelle à la méthode ToArray() après

from s in sortedList 
      select new ... 

J'ai également obtenu une exception. Le problème était les appels à ToString(). Si l'élément était nul, il échouerait.