2010-03-10 3 views
4

В этом примере возникает ошибка, если row.FirstName или row.LastName: NULL.LINQ Заменить DBNull на пустую строку

Как переписать предложение Select, чтобы преобразовать значение DBNull в пустую строку ""?

Dim query = From row As myDataSet.myDataRow in myDataSet.Tables("MyData") _ 
      Select row.FirstName, row.LastName 

ПРИМЕЧАНИЕ. Поскольку DataSet строго типизирован. Я могу использовать row.isFirstNameNull(), но IIF(row.isFirstNameNull(), "", row.FirstName) не будет работать, поскольку все параметры указаны.

ответ

5

В вашей записке вы упомянули IIf(row.isFirstNameNull(), "", row.FirstName) заменить, что с If(row.isFirstNameNull(), "", row.FirstName) который не будет оценивать ложную часть, если условие истинно

+0

Первый ответ. Спасибо всем. – Steven

-1

насчет row.FirstName ?? string.Empty

+0

Отлично подходит для C# - не столько для VB.NET. Люди VB.NET должны использовать форму слияния оператора If [1]: If (row.FirstName, string.Empty). Конечно, это не работает для этого примера - поскольку DbNull.Value IsNot Nothing [2]. [1] http://msdn.microsoft.com/en-us/library/bb513985.aspx [2] http://codebetter.com/blogs/peter.van.ooijen/archive/2004/04/ 12/11210.aspx –

1

Использование VB's ternary operator «если»:

Dim query = From row As myDataSet.myDataRow in myDataSet.Tables("MyData") _ 
    Select if(row.isFirstNameNull(), "", _ 
     row.FirstName), if(row.isLastNameNull(), "", row.LastName) 
Смежные вопросы