У меня есть это выражение запроса, чтобы объединить некоторые значения для проверки данных
result.AddRange(from string dr in ercDt
select dc.Ordinal.ToString() + "|" + dr);
Имея этот ercDt[0] DBNull и больше не имеет строк, я получаю эту ошибку
Невозможно привести объект типа «System.DBNull» к типу «System.String».
я пробовал это
result.AddRange(from string dr in ercDt
where dr.Any(x => x != null)
select dc.Ordinal + "|" + dr);
и это
result.AddRange(from string dr in ercDt
where ercDt.Any(x => x != null)
select dc.Ordinal + "|" + dr);
и это
result.AddRange(from string dr in ercDt
where !(dr is DBNull)
select dc.Ordinal + "|" + dr);
И не повезло,
Как я могу предотвратить появление этой ошибки? Мне вообще не нужно запрашивать пустые значения, поэтому в этом случае моим желаемым результатом будет отсутствие записей.
Спасибо
ИЗМЕНИТЬ:
Основываясь на путанице, я лучше опишу свой случай:
'ercDt' - это список, полученный из запроса linq (результатом этого запроса linq являются строки и очень редкие случаи DBNull), преобразованный в список (с помощью метода ToList()), поэтому я могу преобразовать 'dr' в строку, но мой проблемы возникают из-за значений DBNull
dr
этоDataRow
, это все равно не работает. Вы переводитеDataRow
вString
, что должно дать вам ошибку времени выполнения. Что такоеercDt
(если бы это былоDataTable
, вы бы получили ошибку компилятора)? Что вы на самом деле пытаетесь сделать? - person Tim Schmelter   schedule 18.02.2015