如何在C#中处理来自SQL Server 2017的空数据? [重复]

问题描述 投票:0回答:2

这个问题在这里已有答案:

我想使用C#从我的SQL Server 2017中显示两个连接表。我跟着this YouTube video。当一切看起来都那么完美时,我得到了这个错误:

System.NullReferenceException'对象引用未设置为对象的实例。'

我发现这是因为我在表格中设置了null。

我知道我可以使用LEFT JOIN来处理空值。但问题是我不知道如何在我的C#文件中包含SQL命令。

突出显示的错误行是:<td>@item.rule.Amount</td>

我认为我做错了的可疑部分是

public ActionResult Index()
{ 
    db1 sd = new db1();

    List<Group> groups = sd.Groups.ToList();
    List<Rule> rule = sd.Rules.ToList();
    List<RuleDesc> ruleDesc = sd.RuleDescs.ToList();

    ViewData["jointtables"] = from g in groups
                              join r in rule on g.AcctNo equals r.AcctNo 
                              into table1
                              from r in table1.DefaultIfEmpty()
                              select new Class1 { groups = g, rule = r};

    return View(ViewData["joinedtables"]);
}
c# sql-server left-join jointable
2个回答
0
投票

假设null字段是mynull然后它应该是:

bool isnull = dr.IsDBNull(dr.GetOrdinal("mynull"))

或者您可以在SQL查询中使用COALESCE()或IFNULL()


0
投票

使用Razor View Engine在ASP.NET或.NET Core中的视图中显示值时,我建议您在nullable类型上使用类似.GetValueOrDefault()的方法。

假设您的模型中的Amount字段是以下类型:int? double?float?然后使用GetValueOrDefault()方法。

例如:

<td>@item.rule.Amount.GetValueOrDefault()</td>

这将避免显示System.NullReferenceException 'Object reference not set to an instance of an object.'的错误页面

我希望这有帮助。

© www.soinside.com 2019 - 2024. All rights reserved.