Я пытаюсь получить случайный элемент списка из списка "Котировки".В настоящее время у меня есть веб-часть с пользовательским свойством, которое используется для выбора типа отображаемой цитаты.В списке «Котировки» есть цитаты для следующих категорий: «Корпоративные, Технологии и финансы». В настоящее время я использую цикл foreach, который отображает все цитаты для определенной категории. У меня есть запрос CAML для фильтрации типов котировок, которые должны отображаться.Значение, введенное в пользовательском свойстве веб-части, используется в запросе CAML для отображения кавычек.
Следующий шаг - просто отобразить случайную цитату из определенной категории, но я не уверен вКак этого добиться. Ниже приведен код, который у меня есть, случайный бит еще не завершен, так как я не уверен, как это сделать.
protected void Page_Load(object sender, EventArgs e)
{
if (this.WebPart != null && this.WebPart.PracticeArea != null)
{
string PracticeArea = this.WebPart.PracticeArea; //get the value of the property
//getting a reference to the site location
string webUrl = SPContext.Current.Site.AllWebs["practices"].Url;
//Getting the Quotes list
using (SPSite site = new SPSite(webUrl))
{
using (SPWeb web = site.OpenWeb())
{
try
{
//getting the Quotes list
SPList quotesList = web.Lists["Quotes"];
//SPListItemCollection collLisItems = quotesList.Items; not needed
//CAML query to filter or obtain the correct quote based on Area. Value for Area is
//passed from the custom property and used in the caml query
SPQuery quotesbySector = new SPQuery();
//creating an object to handle our random list item selection
//not too sure whether this is correct
Random rndQuote = new Random();
int num = rndQuote.Next();
//string camlquery1 = "<Where><Eq>" + "<FieldRef Name='Area'/>" + "</Eq></Where>";
string camlquery1 = @"
<Where>
<Eq>
<FieldRef Name='Area'/>
<Value Type='Text'>" + PracticeArea + @" </Value>
</Eq>
</Where>";
quotesbySector.Query = camlquery1;
SPListItemCollection collListItems = quotesList.GetItems(quotesbySector);
//SPListItem firstQuote = collListItems[0];
//for each loop might need to be removed, as we are only interested in getting a
//random quote and not all quotes
foreach (SPListItem item in collListItems)
{
string quotes = (string)item["Quote"];
string quotesSource = (string)item["Source"];
string quotesYear = (string)item["Year"];
//string quotesArea = (string)item["Area"]; //not needed used for test purposes
plhQuotes.Controls.Add(new LiteralControl(quotes + "<br/>" + "<br/>" + quotesSource +
"<br/>" + "<br/>" + quotesYear + "<br/>" + "<br/>"));
}
}
catch (Exception err)
{
plhErrors.Controls.Add(new LiteralControl(err.ToString()));
}
}
}
}
}
Я уверен, что есть простой способ добиться этого.Любое предложение будет с благодарностью.
Заранее спасибо.