Как заполнить список <string>значениями Datarow из отдельных столбцов - PullRequest
2 голосов
/ 12 апреля 2010

Я все еще учусь (детские шаги). Возиться с функцией и надеяться найти более удобный способ работы с моими данными.

Для наиболее часто используемых таблиц на протяжении всей жизни программы я буду записывать их в таблицы данных и вместо этого запрашивать их. То, что я надеюсь сделать, это запросить таблицы данных, скажем, column x = "this", и преобразовать значения столбца "y" непосредственно в List для возврата к вызывающей стороне:

    private List<string> LookupColumnY(string hex)
    {
        List<string> stringlist = new List<string>();
        DataRow[] rows = tblDataTable.Select("Columnx = '" + hex + "'", "Columny ASC");
        foreach (DataRow row in rows) { stringlist.Add(row["Columny"].ToString()); } 
        return stringlist;
    }

Кто-нибудь знает немного более простой метод? Я думаю, это достаточно просто, но мне интересно, если я сделаю достаточно, если итерация по циклу foreach не будет падением производительности. ТИА!

1 Ответ

4 голосов
/ 12 апреля 2010

Вы можете использовать LINQ, чтобы упростить это:

public IEnumerable<string> LookupColumnY(string hex)
{
     return tblDataTable
                .Select("Columnx = '" + hex + "'", "Columny ASC")
                .Select(row => row["Columny"].ToString() );
}

Если вам нужно вернуть список, вы можете добавить ToList():

public IList<string> LookupColumnY(string hex)
{
     return tblDataTable
                .Select("Columnx = '" + hex + "'", "Columny ASC")
                .Select(row => row["Columny"].ToString() )
                .ToList();
}

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

...