У меня есть DataSet, созданный в конструкторе DS VS 2017, и я пытаюсь получить первую строку, возвращенную из DataAdapter. Когда я пытаюсь передать первую строку ([TblEventTypes.Rows[0]) в TypesRow, я получаю сообщение об ошибке
"Cannot implicitly convert type 'System.Data.DataRow' to 'DSEventTypes.EventTypesRow'. An explicit conversion exists (are you missing a cast)?"
Вот код, который у меня есть:
private DSEventTypesTableAdapters.EventTypesTableAdapter _EventTypesDataAdapter;
protected DSEventTypesTableAdapters.EventTypesTableAdapter EventTypesAdapter
{
get
{
if (_EventTypesDataAdapter == null)
{
_EventTypesDataAdapter = new DSEventTypesTableAdapters.EventTypesTableAdapter();
}
return _EventTypesDataAdapter;
}
}
public bool GetEventTypeByID(int EventTypeID, ref string EventType, ref string Results)
{
DSEventTypes.EventTypesRow TypesRow;
DSEventTypes.EventTypesDataTable TblEventTypes = EventTypesAdapter.GetDataById(EventTypeID);
if (TblEventTypes.Rows.Count > 0)
{
TypesRow = TblEventTypes.Rows[0];
}
return true;
}
Ошибка появляется в строке TypesRow = TblEventTypes.Rows[0];, а красная строка ошибки появляется под TblEventTypes.Rows[0];. Объявление «TypesRow» верно, так как intellisense VS 2017 действительно перечисляет все имена столбцов в таблице.
Я новичок в C# (несколько лет назад использовал C++), и в течение многих лет я создавал свои Windows и веб-приложения на VB.NET, поэтому мне, вероятно, не хватает чего-то простого, и я был бы признателен за любую помощь, которую я могу получить.
Извините Василий, как я уже сказал, я новичок в C# и не знал, как его приводить.
@JohnV хорошо быть новичком, но вам действительно следует внимательно читать сообщения об исключениях. В них почти всегда (буквально) содержится решение вашей проблемы. Если бы вы искали только "Приведение С#" с помощью Google, вы бы сразу же нашли эта страница в документах, и поэтому не было бы причин задавать этот вопрос в stackoverflow.





пытаться
TypesRow = (EventTypesRow)(tblEventTypes.Rows[0]);
Зачем это пробовать? Пожалуйста, добавьте объяснение к вашему коду, чтобы другие могли учиться на нем.
Никто никогда не читает сообщения об исключениях :( «Не удается неявно преобразовать тип System.Data.DataRow в DSEventTypes.EventTypesRow. Существует явное преобразование (вам не хватает приведения)?» означает, что вы не можете неявно преобразовать переменную типа
System.Data.DataRowвDSEventTypes.EventTypesRow, но есть явное преобразование. Вам не хватает оператора приведения?