2013-07-29 3 views
1
List<object> li = new List <object>(Items); 
string name = ""; 
foreach (var item in Items) 
{ 
    name = item["title"].ToString(); 
} 
return name; 

Используя этот код, я не могу найти способ, чтобы изменить возвращение к выходу все элементов из списка. Как есть, он возвращает только последний элемент. Как я могу получить каждый возвращенный товар?Возвращайтесь каждый элемент в списке из Еогеаспа

+2

сделать новый список и вернуть его .. – Sayse

+1

Это поможет узнать, где этот метод потребляется – Khan

+1

Как вы хотите, чтобы они вернулись? Вы хотите, чтобы они каким-то образом превратились в одну строку? вы хотите вернуть список строк или что-то еще ... – Chris

ответ

0

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

List<object> li = new List <object>(Items); 
    string name = ""; 
    foreach (var item in Items) 
    { 
     yield return item["title"].ToString(); 
    } 
+1

'yield return' и' return'within один метод? Если я правильно помню, это не скомпилируется. –

+0

Да, я исправил это, спасибо, что думал, что он будет жаловаться не на все пути, вызвавшие возвращение –

+0

Ваш код не будет компилироваться.Назначение не может быть выполнено в 'yield return' – Romoku

5

Вы должны вернуть новый список, в вашем примере вы просто установив имя текущего имени затем возвращаются имя в конце. Так как вы перебираете все элементы, имя возвращается к окончательному значению в списке перед возвратом. Кроме того, ваш тип возврата - string, если вы не объедините все элементы в li в одну строку, тогда вы не сможете вернуть список в виде строки.

List<string> newList = li.Select(x => x["title"].ToString()).ToList(); 

Будет создан новый список строк, где каждый элемент является названием элемента из вашего списка источников, li.

Если вы действительно хотите вернуть строку, вы можете использовать (я считаю) String.Join или, (этот, я уверен) Aggregate, как это;

return li.Aggregate((c, n) => c["title"].ToString() + ", " + b["title"].ToString()); 

Приведенный выше код вернет строку, которая представляет собой список наименований элементов, разделенных запятыми.

0

Как вы знаете, метод может вернуть одно значение с оператором возврата. Таким образом, вы хотите вернуть все элементы в виде IEnumerable (List, Array и т. Д.).

return Items.Select(x => x["Title"].ToString()).ToArray(); 
0

Вам необходимо вернуть весь список и извлечь каждый элемент, если вы хотите их использовать. Вы не можете передать все эти элементы сразу, если вы не храните их в каком-то контейнере (например, в массиве).

Опять же, это не имеет большого смысла, если у вас уже есть объект List, чтобы разместить их. Тип CL12 List<T> - это массив с регулируемой длиной, а не классический связанный список.

Если вы хотите больше узнать о вашем конкретном расположении, мы можем помочь вам лучше.

Смежные вопросы