2010-01-24 7 views
0

Je ne sais pas pourquoi IQuerable me limite lorsque j'essaie de rechercher dans la base de données des données contenant des chaînes d'un tableau.IQueryable contient l'un des tableaux de chaînes

objectFactory.Resolve<IUserDao>().Query. 
       Where(t => 
        (spltedInput.Any(val=> t.LastName.Contains(val)) || spltedInput.Any(val=> t.Name.Contains(val))) 
        && t.MasterCompany.Id == MasterCompanySeted). 
       Select(t => new { Name = t.Name + " " + t.LastName, Id = t.Id }). 
       AsEnumerable(). 
       Select(t => new RadComboBoxItemData() { Text = t.Name, Value = t.Id.ToString() }) 
       .ToArray(); 

Il jette NullReferenceException, je ne suis pas sûr de ce qu'il faut faire pour vérifier si des éléments du tableau est containd dans les LastName ou le nom et ce qui cause cette exception.

Je devine seulement que c'est parce que vous ne pouvez pas faire une requête dans une requête?

Répondre

0

Je suspecte que votre objectFactory ou IUserDao est probablement nul et c'est pourquoi vous obtenez un NullReferenceException. Avez-vous débogué, car le débogueur vous dira quel objet est nul.

+0

Nope, cela fonctionne comme un charme, je ne ai donné ce code afin que vous puissiez voir le contexte, quand Je le change pour par exemple: t.LastName.Contains (spltedInput [0]) cela fonctionne très bien. – Jacob

0

Vous pouvez effectuer une requête dans une requête.

Voici un exemple au hasard d'une requête Linq imbriqué que j'ai trouvé via Google, votre kilométrage peut varier:

var query = people 
    .Where(p => p.ID == 1) 
    .SelectMany(p => roles 
     .Where(r => r.ID == p.ID) 
     .Select(r => new { p.FirstName, p.LastName, r.Role })); 
Questions connexes