prasanna.raj Ответов: 1

Как я могу изменить цикл for и foreach в LINQ C#


Всем Привет,

Я не знаю, как изменить циклы for и foreach в linq в качестве моей ситуации

Инструкция foreach

//GrdJobno is of type System.Web.UI.WebControls.GridView
foreach (TableCell cell in GrdJobno.HeaderRow.Cells)
            {
                if (cell.Text != " ") // AUTOMATICALLY GENRATION SPACE " "
                    dtCustomers.Columns.Add(cell.Text);
            }


цикл for

//dtCustomers is of type System.Data.DataTable
foreach (GridViewRow row in GrdJobno.Rows)
            {
                dtCustomers.Rows.Add();
                for (int i = 1; i < row.Cells.Count; i++)
                {
                    dtCustomers.Rows[row.RowIndex][i - 1] = row.Cells[i].Text.Replace(" ", "");
                }
            }


Вот этот, как я могу измениться в LINQ. Возможно ли это в LINQ, если кто-то знает, то, пожалуйста, направьте меня.

Спасибо

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

Поискал какой-то код в google, основываясь на моей ситуации

Thomas Daniels

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

OriginalGriff

Что вы пробовали?
Не "что ты погуглил?" - что вы на самом деле сделали, чтобы попытаться сгенерировать код Linq?

F-ES Sitecore

Использование linq сделает ваш код медленнее, нет смысла это делать.

Maciej Los

Извините, но ваш вопрос не совсем ясен. Можете ли вы предоставить более подробную информацию? Почему вы хотите заменить for/foreach на выражение Linq?

Rasik Bihari Tiwari

Каков тип данных переменной GrdJobno и dtCustomers? Я прошу Вас, пожалуйста, опубликовать полный код.

1 Ответов

Рейтинг:
2

Rasik Bihari Tiwari

Вот как вы можете достичь желаемого преобразования LINQ:

Преобразование для вашего первого фрагмента кода конструкции foreach -

GrdJobno.HeaderRow.Cells.OfType<TableCell>().ToList<TableCell>().ForEach(cell => {

                if (cell.Text != " ")
                    dtCustomers.Columns.Add(cell.Text);

            });


Во втором фрагменте кода есть внешний цикл foreach и внутренний цикл for. Вы запросили преобразование цикла for В запрос LINQ, что технически невозможно. В лучшем случае вы можете преобразовать внешнюю конструкцию foreach в запрос LINQ. Вот как:

GrdJobno.Rows.OfType<GridViewRow>().ToList<GridViewRow>().ForEach(
                row =>
                {
                    dtCustomers.Rows.Add();
                    for (int i = 1; i < row.Cells.Count; i++)
                    {
                        dtCustomers.Rows[row.RowIndex][i - 1] = row.Cells[i].Text.Replace(" ", "");
                    }
                });