我的 Linq-to-SQL 程序从我的 SQL Server 数据库返回了很多值,其中一些值可以为空,而另一些则不是。
如果该DataTable
列被转换为字符串,这不是问题。但是,当它被转换为十进制时,我收到错误消息,指出十进制不能为空。
我需要找出的是如何在保持代码整洁的同时有效地处理这些问题。
// Create DataTable
DataTable dt = new DataTable();
dt.Columns.add("Deal", typeof(string));
dt.Columns.add("Price", typeof(decimal) ?? typeof(DBNull));
// Create Linq Query
var query =
from quer in table
select new
{
quer.deal_id,
quer.price
};
在这里,我在插入表之前创建了我的数据行:
var datarows = query.Select(r =>
{
var row = dt.NewRow();
row["Deal"] = r.deal_id;
row["Price"] = r.price;
};
现在,为了确保我的数据行可以处理 Null,我可以将其设为可为空,但这不是必需的。
dt.Columns.add("Deal", typeof(string?));
但是对于十进制字段,我必须这样做:
if (r.price == DBNull.Value)
{
row["Price"] = null;
}
现在我必须对if
我正在设计的每个表进行大约 50 次这样的语句检查。我可以将它传递给一个函数吗?