2010-01-22 5 views
0

J'ai le code suivant, que pour une raison que je ne connais pas, ne remplit pas le resultset LINQ à la liste (et il y a beaucoup de résultats dans cette liste), cependant , je le lie au datatable original, ça marche bien. des idées:Liaison linq résultat à la zone de liste

DataTable t = _partitionsDataSet.Tables[0]; 

       var customizedPartitions = from r in t.AsEnumerable() 
           select new 
              { 
               Name = string.Format("{0}[{1}]", r["Name"], r["UserName"]), 
               BlobId = r["BlobId"].ToString() 
              }; 

       if (customizedPartitions.Count() > 0) 
       { 
        _dataView.Sort = "Name"; 
        listBoxPartitions.DisplayMember = "Name"; 
        listBoxPartitions.ValueMember = "BlobId"; 
        listBoxPartitions.DataSource = customizedPartitions; 
       } 

Répondre

1

Vous devez appeler la méthode listBoxPartitions.DataBind() après avoir réglé la source de données.

+0

L'OP dit que la liaison à DataTable fonctionne mais que la liaison à LINQ ne fonctionne pas. Pour que la liaison à DataTable fonctionne, il doit appeler DataBind ailleurs (ce serait bien s'il le spécifiait). –

+0

il s'agit d'une application Windows et vous ne disposez pas de la fonction DataBind(), et vous n'avez pas besoin de l'appeler. il le fait pour vous. à côté, il fonctionne avec datatable sans appeler à aucune fonction. –

+0

@Or A - Je sais comment cela fonctionne, mais vous n'avez pas mentionné dans votre message qu'il s'agit d'une application Windows. –

1

il semble que si je me lie à "customizedPartitions.ToList()" tout fonctionne bien. intéressant..tout commentaire pourquoi?

+0

Odd, certaines requêtes linq s'exécutent réellement quand vous parcourez ou appelez ToList() ... alors peut-être que c'est le problème ... mais je n'ai pas souvent à le faire avec dire LINQ to SQL (je n'utilise pas LINQ à DataSets si). –

+0

.ToList() exécutera le Linq pour obtenir les données (il ne sera plus différé) c'est pourquoi cela fonctionne. –

Questions connexes