空白を "" に置き換える方法がわかりません。このコードで DbNull エラーが発生しているため:
var subFields = permCollection
.Where(item=>fields.Contains(item.FBFieldName))
.Select(a=>a.FBSubFieldName)
.ToList();
FBSubFieldName の値には、空白のものとそうでないものがあります。何か案は?
これは厳密に型指定されDataTable
ているため、null 許容で null のプロパティにアクセスすると、(デフォルトで) 例外がスローされます。
bool
null かどうかを示す自動生成されたプロパティがあり、それを条件付き operator(?) で使用します。
var subFields = permCollection
.Where(item => fields.Contains(item.FBFieldName))
.Select(item => item.IsFBSubFieldNameNull ? "" : item.FBSubFieldName)
.ToList();
次のようなものかもしれません:
var subFields = permCollection
.Where(item=>item.FBSubFieldName!=null && fields.Contains(item.FBFieldName) )
.Select(a=>a.FBSubFieldName)
.ToList();
ここで、提供されたコードによると、 でFBSubFieldName
クエリされたのと同じ「データ」のフィールドであると推測しますSelect
。
これがあなたが求めているものでない場合は、明確にしてください。
フィールドで DBNull をテストする必要があります。手始めに試してみてください
var subFields = permCollection
.Where(item=>!(item.FBSubFieldName is System.DBNull) && fields.Contains(item.FBFieldName) )
.Select(a=>a.FBSubFieldName)
.ToList();