2011-07-22 3 views
1

J'ai une liste de Silverlight 2.0 qui lit dans les données d'une liste personnalisée @ SharePoint 2007. Comment puis-je limiter le nombre d'éléments à afficher sur le chargement de Page.xaml ?limiter le nombre d'éléments de la liste à afficher sur le chargement, par programme

Ici, j'ai @ Page.xaml.cs:

private void ProcessResponse() 
     { 
      XDocument results = XDocument.Parse(_responseString); 

      _StaffNews = (from item in results.Descendants(XName.Get("row", "#RowsetSchema")) 

         //where !item.Element("NewsThumbnail").Attribute("src").Value.EndsWith(".gif") 
         select new StaffNews() 
         {     
          Title = item.Attribute("ows_Title").Value, 
          NewsBody = item.Attribute("ows_NewsBody").Value, 
          NewsThumbnail = FormatImageUrl(item.Attribute("ows_NewsThumbnail").Value), 
          DatePublished = item.Attribute("ows_Date_Published").Value, 
          PublishedBy = item.Attribute("ows_PublishedBy").Value, 
         }).ToList(); 
      this.DataContext = _StaffNews; 
      //NewsList.SelectedIndex = -1;    
     } 

Répondre

3

Vous pouvez mettre .Take(20) derrière ToList() pour ne prendre que 20 éléments de la liste. La méthode

+0

Thankx pour la réponse:> Im obtenir l'erreur: Impossible de convertir implicitement le type « System.Collections.Generic. Inombrables 'System.Collections.Generic.List '. Une conversion explicite existe (manque-t-il une distribution?) Lorsque je fais un .ToList(). Take (3); S'il vous plaît montrez-moi la lumière? – brainsfrying

+0

Merci beaucoup tout de même. D'une manière ou d'une autre, je suis tombé sur une autre approche qui contourne l'erreur que j'ai rencontrée. Simplement, j'ai fait un: ToList(). GetRange (0,3); – brainsfrying

+0

@Mike, n'utilisez pas cette approche, il va chercher votre base de données entière et ensuite seulement lire les 4 premières lignes. Il suffit d'utiliser Take (4) .Tolist() – thekip

1

Take vous permet de définir une limite sur les éléments. Il ne fera qu'itérer la collection jusqu'à ce que le nombre maximum soit atteint. Vous pouvez simplement l'utiliser au lieu de ToList() ou en cas de _StaffNews est défini comme List<T>, il suffit de les combiner .Take(items).ToList();

private void ProcessResponse() 
{  
      var items = 10; 
      XDocument results = XDocument.Parse(_responseString); 

      _StaffNews = (from item in results.Descendants(XName.Get("row", "#RowsetSchema")) 

        //where !item.Element("NewsThumbnail").Attribute("src").Value.EndsWith(".gif") 
        select new StaffNews() 
        {     
         Title = item.Attribute("ows_Title").Value, 
         NewsBody = item.Attribute("ows_NewsBody").Value, 
         NewsThumbnail = FormatImageUrl(item.Attribute("ows_NewsThumbnail").Value), 
         DatePublished = item.Attribute("ows_Date_Published").Value, 
         PublishedBy = item.Attribute("ows_PublishedBy").Value, 
        }).Take(items); 
      this.DataContext = _StaffNews; 
      //NewsList.SelectedIndex = -1;    
} 
+0

Hey, appréciez votre aide! Encore une fois, j'ai appris pas mal de vous les gars :) – brainsfrying

Questions connexes