Member 8010354 Ответов: 2

Как остановить итерации в цикле foreach


Привет,

Ниже приведен код, в котором он должен представлять текст внутри переменной STRBODY. но поскольку он находится в цикле for, он принимает несколько итераций и отображает все значения, но я хочу, чтобы он возвращал только одно значение.

Код:

по каждому элементу(ВАР ВИЭ в detailresults.Результаты.Выберите (x= & gt;x.Artifact).Список())
{
STRBODY += res[fieldname] + "; " + res[Field name2];
}

//detailresults - это объект

Может ли кто-нибудь помочь мне той же логикой, которую я могу написать по-другому без итераций? например, если условие и так далее.

Что я уже пробовал:

Я попытался настроить код, написав условие IF, но это не удалось из-за моего синтаксиса.

2 Ответов

Рейтинг:
12

Mithlesh Shaw

Вы можете взять первый объект из списка

var res=detailresults.Results.Select(x=>x.Artifact).FirstOrDefault();

а затем установите строку
STRBODY += res[fieldname] + ";" + res[Field name2];


Примечание: Регистрация РЭС не null перед использованием объекта ВИЭ.


Member 8010354

Огромное спасибо. Он работает нормально, но есть небольшая проблема. В полях name1 и fieldname2 я использую поле a, где у него есть несколько вариантов выбора. Я хочу, чтобы отображалось выбранное значение выбора, но когда я использую там имя поля, я не получаю имя поля и выбранное значение выбора.

Рейтинг:
1

F-ES Sitecore

Вам не нужен ToList (), но если вы работаете с набором данных, который содержит несколько элементов, то вам понадобится цикл. С точки зрения производительности ваш код может быть улучшен с помощью StringBuilder, а не конкатенации строк.

System.Text.StringBuilder sb = new System.Text.StringBuilder();
foreach(var res in detailresults.Results.Select(x=>x.Artifact))
 {
    sb.AppendFormat("{0};{1}", res[fieldname], res[fieldname2]);
 }

 string results = sb.ToString();


Member 8010354

В строке string results = sb.ToString (); я получаю ошибку рядом с переменной results, в которой говорится: "локальная переменная results не может быть объявлена в этой области, потому что она может дать другое значение для результатов, которые уже используются в родительской или текущей области для обозначения чего-то другого."
Могу ли я использовать какое-либо другое слово?