Перепишите foreach, используя лямбду + C # 3.0 - PullRequest
2 голосов
/ 06 мая 2010

Я пытаюсь сделать следующее

foreach (DataRow dr in dt.Rows)
                        {
                            if (dr["TABLE_NAME"].ToString().Contains(sheetName))
                            {
                                tableName = dr["TABLE_NAME"].ToString();
                            }
                        }

используя лямбду, как

string tableName = "";
                        DataTableExtensions.AsEnumerable(dt).ToList().ForEach(i =>
                            {
                                tableName = i["TABLE_NAME"].ToString().Contains(sheetName);
                            }
                        );

но получая ошибку времени компиляции "не может неявно bool to string". Так как добиться того же .?

спасибо (C # 3.0)

1 Ответ

2 голосов
/ 06 мая 2010

tableName равно string, а Contains() возвращает bool.

Так что ошибка из-за

    tableName = i["TABLE_NAME"].ToString().Contains(sheetName);

Что вы можете сделать, это (но я думаю, что лучшие варианты доступны в linq)

string tableName = "";
DataTableExtensions.AsEnumerable(dt).ToList().ForEach(i =>
    {
        var s =  i["TABLE_NAME"];
        if(s.ToString().Contains(sheetName))
            tableName = s;
    }
);

Удачи.

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