Конвертировать для цикла в LINQ - PullRequest
0 голосов
/ 10 декабря 2018

Я пытаюсь избежать цикла for и использовать LINQ вместо цикла for.Любая помощь будет высоко оценена.Я пытался использовать dt.select (a => ...), но всегда выдает ошибку «Невозможно преобразовать лямбда-выражение в строку типа, потому что это не тип делегата».

    AutoCompleteStringCollection coll = new AutoCompleteStringCollection();  
    cn = new SqlConnection("Data Source=.;Initial Catalog=XYX;Integrated 
    Security=True");
    da = new SqlDataAdapter("select UserName from ServiceProviders order 
    by UserName asc", cn);
    DataTable dt = new DataTable();
    da.Fill(dt);
    if (dt.Rows.Count > 0)
      {
         for (int i = 0; i < dt.Rows.Count; i++)
            {
             coll.Add(dt.Rows[i]["UserName"].ToString());
            }
        }

Ответы [ 2 ]

0 голосов
/ 10 декабря 2018

Чтобы выполнить linq запрос к DataTable, сначала нужно вызвать .AsEnumerable().Я заметил, что ваш coll не List<string>, но вы добавляете к нему свой выбор как string, возможно, вы захотите посмотреть на это, но чтобы ответить на ваш конкретный вопрос, вот базовый пример, который запрашиваетDataTable и добавляет определенные строки в List<T>.

var dt = new DataTable();
dt.Columns.Add("UserName");
dt.Columns.Add("Bar");
dt.Rows.Add("Bob", 1);
dt.Rows.Add("Bill", 2);
dt.Rows.Add("John", 3);

var foo = dt.AsEnumerable().Select(r => r["UserName"]).ToList();
var bar = dt.AsEnumerable().Select(r => r["Bar"]).ToList();
0 голосов
/ 10 декабря 2018

Я думаю, что вам нужен простой способ сделать этот цикл, я бы использовал foreach вместо if и for.Хорошая вещь о foreach в том, что вам не нужно проверять счет.Если его нет, он не будет выполнен.Код должен выглядеть примерно так:

foreach( var row in dt.Rows)
{
   coll.Add(row["Username"].ToString());
}

Запомните это - Linq не предназначен для удаления потока управления (циклов) из вашего кода - цикл все еще существует.Linq о выражениях и выражениях, которые могут включать циклы или поток управления.(Я знаю, это неуловимо).

Итог - если вам нужен цикл, вам нужен цикл.Linq не «удаляет» эту потребность.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...