2010-08-13 2 views
3

Можно создать дубликат:
LINQ equivalent of foreach for IEnumerable<T>Как это сделать с помощью linq?

, пожалуйста, помогите мне, чтобы выяснить, как заменить петлю ниже с выражением Linq:


using System.Web.UI.WebControls; 
... 
Table table = ...; 
BulletedList list = new BulletedList(); 

foreach (TableRow r in table.Rows) 
{ 
    list.Items.Add(new ListItem(r.ToString())); 
} 

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

Я спрашиваю, как использовать BulletedList.AddRange и предоставить ему массив элементов, созданных из таблицы, с помощью инструкции linq.

спасибо! константин

+0

@aksonu: Добро пожаловать в StackOverflow! Пожалуйста, ответы на вопросы, которые вам полезны, и отметьте ответы как принятые (нажмите галочку) для того, что вам больше всего помогло. Это система репутации, которая помогает улучшить вашу репутацию, а также обеспечить качественные ответы на ваши вопросы. –

+0

@aksonu: не забудьте оставить ответы, которые вы найдете полезными в StackOverflow - серых треугольниках выше/ниже каждого ответа. Не ловить рыбу за спинами, просто пытаясь помочь! :) Это относится ко всем ответам, даже тем, о которых вы не задали! –

+0

не может. не хватает репутации :) Спасибо за вашу помощь. – akonsu

ответ

1

Рассмотрите возможность использования AddRange() с массивом новых ListItems. Вам необходимо будет .Cast(), чтобы получить IEnumerable из TableRow.

list.Items.AddRange(
     table.Rows.Cast<TableRow>() 
        .Select(x => new ListItem(x.ToString())) 
        .ToArray() 
    ); 
1

как о

list.Items.AddRange(table.Rows.Select(r => new ListItem(r.ToString()))); 
+0

. Не могу применить. Выберите в таблицу. Может, я? – akonsu

+0

Это было мое плохое, просто что-то написало как идею, как указал p.campbell, вам нужно бросить сначала, а затем вызвать ToArray() в конце – theburningmonk