AndrewdAzotus Ответов: 1

Возвращает datarow как пользовательский класс


У меня есть:

public class rowEntry
{
    public int idx;
    public string descr;
    public string param;

    rowEntry(DataRow dr)
    {
        int.TryParse(dr[0].ToString(), out idx);
        descr = dr[1].ToString();
        param = dr[2].ToString();
    }
}


и, как часть IEnumerable, хочу вернуться:

        public rowEntry Current
...
return (rowEntry)tbl.Rows[posn];
...


но я не могу преобразовать тип DataRow в rowEntry

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

Я пытался найти ответ, но не смог найти ничего, что казалось бы достаточно близким

[no name]

Вы не можете привести строки как свою коллекцию строк, а не класс, который у вас есть. Вместо этого вы можете передать строку/строки любому методу, а затем построить свой объект класса rowEntry

1 Ответов

Рейтинг:
0

AndrewdAzotus

Таким образом, это, по крайней мере, компилируется:

public rowEntry Current
{
    get
    {
        try
        {
            rowEntry xre = new rowEntry(tbl.Rows[posn]);
            return xre;
        }
        catch (IndexOutOfRangeException)
        {
            throw new InvalidOperationException();
        }
    }
}


это лучший способ?