- LINQ:
XElement xml = new XElement("quotes",
new XElement("quote",
new XElement("customer", "Customer #1"),
new XElement("text", "Quote #1")),
new XElement("quote",
new XElement("customer", "Customer #2"),
new XElement("text", "Quote #2")),
new XElement("quote",
new XElement("customer", "Customer #3"),
new XElement("text", "Quote #3")),
new XElement("quote",
new XElement("customer", "Customer #4"),
new XElement("text", "Quote #4")),
new XElement("quote",
new XElement("customer", "Customer #5"),
new XElement("text", "Quote #5"))
);
var result = xml.Elements()
.OrderBy(r => System.Guid.NewGuid())
.Select(element => new {
Customer = element.Element("customer").Value,
Quote = element.Element("text").Value
})
.First();
Console.WriteLine("{0} : {1}", result.Customer, result.Quote);
:
<quotes>
<quote>
<customer>Customer #1</customer>
<text>Quote #1</text>
</quote>
<quote>
<customer>Customer #2</customer>
<text>Quote #2</text>
</quote>
<quote>
<customer>Customer #3</customer>
<text>Quote #3</text>
</quote>
<quote>
<customer>Customer #4</customer>
<text>Quote #4</text>
</quote>
<quote>
<customer>Customer #5</customer>
<text>Quote #5</text>
</quote>
</quotes>
XElement xml = XElement.Load("filename");
xml ( ).
Guid, , : public static Random rand = new Random(); :
int count = xml.Elements().Count();
var randomQuote = xml.Elements()
.OrderBy(i => rand.Next(0, count))
.Select(element => new {
Customer = element.Element("customer").Value,
Quote = element.Element("text").Value
})
.First();
Console.WriteLine("{0} : {1}", result.Customer, result.Quote);