1

Signalrを使用しているASP.NETWEBAPIアプリケーションでは、以下のコードを使用しています。

 using (var reader = command.ExecuteReader())
                    return reader.Cast<IDataRecord>()
                        .Select(x => new CustomerInfo()
                        {
                            CustomerName = x.GetString(0),
                            CustomerAddress = x.GetString(1),

                        }).ToList();

データベースにCustomerNameとCustomerAddressの両方がある場合、これは正常に機能しています。しかし、列のいずれかがNULLの場合は失敗しました。実行時エラーを下回っています

Unable to cast object of type 'System.DBNull' to type 'System.String'.

どうすればこれを処理できますか?

4

1 に答える 1

1

asキーワードでそれを行うことができます:x[0] as string

using (var reader = command.ExecuteReader())
    return reader.Cast<IDataRecord>()
                 .Select(x => new CustomerInfo()
                 {
                     CustomerName = x[0] as string,
                     CustomerAddress = x[1] as string,    
                 }).ToList();
于 2013-03-24T20:43:44.237 に答える