2010-05-21 4 views
0

J'ai écritproblème dans la formation de requêtes LINQ

List<int> Uids = new List<int>(); 

    Uids = (from returnResultSet in ds.ToList() 
          from portfolioReturn in returnResultSet.Portfolios 
          from baseRecord in portfolioReturn.ChildData 
          select new int 
          { 
           id = baseRecord.Id 
          }).ToList<int>(); 

Erreur d'obtention: 'int' ne contient pas de définition pour 'id'

quel est le problème que je créé?

Merci

Répondre

2

Essayez ceci:

List<int> Uids = (from returnResultSet in ds.ToList() 
        from portfolioReturn in returnResultSet.Portfolios 
        from baseRecord in portfolioReturn.ChildData 
        select baseRecord.Id).ToList<int>(); 

Puisque vous souhaitez obtenir une liste d'entiers, vous pouvez simplement projeter la Id propriété de votre requête, puis utilisez la méthode d'extension ToList pour les tampons dans un List<T>. En note, êtes-vous certain qu'un List<T> est le bon type à utiliser ici? Vous renoncez à l'avantage de l'exécution différée et ne serez pas en mesure de diffuser ces identifiants si vous les mettez en tampon dans un List<T>.

1

Votre code essaie d'instancier ints, en définissant une propriété id qui n'existe pas. Je pense que ce qui suit est ce dont vous avez besoin.

Uids = (from returnResultSet in ds.ToList() 
        from portfolioReturn in returnResultSet.Portfolios 
        from baseRecord in portfolioReturn.ChildData 
        select baseRecord.Id).ToList<int>(); 
1

Le problème est avec le: sélectionnez nouvelle partie int {}.

Essayez simplement faire:

List<int> Uids = new List<int>(); 

Uids = (from returnResultSet in ds.ToList() 
         from portfolioReturn in returnResultSet.Portfolios 
         from baseRecord in portfolioReturn.ChildData 
         select baseRecord.Id 
     ) 
     .ToList<int>(); 

sélectionner une nouvelle syntaxe {} est pour définir des types anonymes (où l'utilisation est limitée à la même portée de fonction).

Andrew.