 <p>You could use <code>Random</code> class to generate two random numbers and take those two elements from collection. </p> <pre><code> int[] randints = new int[2]; Random rnd = new Random(); randints[0] = rnd.Next(0, xDoc.Descendants("item").Count()); // creates first random number do { randints[1] = rnd.Next(0, xDoc.Descendants("item").Count()); // creates second random number }while (randints[1] == randints[0]); // make sure that you don't have duplicates. var items = xDoc.Descendants("item") .Skip(randints[0]-1) .Take(1) .Concat(xDoc.Descendants("item") .Skip(randints[1]-1) .Take(1)) .Select(x=&gt; new { title = x.Element("title").Value, link = x.Element("link").Value, pubDate = x.Element("pubDate").Value, description = x.Element("description").Value }); foreach (var i in items) { Feeds f = new Feeds { Title = i.title, Link = i.link, PublishDate = i.pubDate, Description = i.description }; feeds.Add(f); } </code></pre>