sql - 从 Linq Query 管理空白字段
问题描述
我正在 VB.Net 中编写一个在我的数据库上运行 LINQ 查询的方法,并将查询中的信息放入表单上的文本框中。
Public Sub OpenPartWindow(ByVal partNumber As String)
Using dbContext As New DB_LINQDataContext
Dim query = (From p In dbContext.Parts
Join ppl In dbContext.Part_Price_Logs On p.Part_ID Equals ppl.Part_ID
Where p.Part_Number = partNumber
Select p.Part_Number, p.Part_Description, p.Part_Information, p.Supplier.Supplier_Name, _
p.Part_Manufacturer.Manufacturer_Name, p.Part_Subcategory.Part_Category.Category_Description, _
p.Part_Subcategory.Subcategory_Description, ppl.Cost_Per_Unit, ppl.Discount_Percentage).First()
MessageBox.Show(query.ToString())
txtPartNum.Text = query.Part_Number.ToString()
txtSupplier.Text = query.Supplier_Name.ToString()
txtManufacturer.Text = query.Manufacturer_Name.ToString()
txtPrice.Text = query.Cost_Per_Unit.ToString()
txtDiscount.Text = query.Discount_Percentage.ToString()
txtDescription.Text = query.Part_Description.ToString()
txtInfo.Text = query.Part_Information.ToString()
Me.Show()
End Using
End Sub
我现在遇到的问题是最后一个字段,txtInfo
TextBox。您会看到Part_Information
数据库上的字段允许NULL
值。因此,当我在该字段为 null 时填写该字段时,我得到一个NullReferenceException
,这是可以理解的。但是我找不到解决此异常的方法。
我试过了:
If Not IsNothing(query._Part_Information.ToString()) Then
也
If query.Part_Information.Length > 0 Then
As If 语句首先运行。但我每次都收到错误。所以我对如何处理这个错误感到困惑。
解决方案
您可以使用以下任一选项:
txtInfo.Text = String.Format("{0}", query.Part_Information)
txtInfo.Text = $"{query.Part_Information}"
→ $ - 字符串插值txtInfo.Text = query.Part_Information?.ToString()
→ ?. - 空条件运算符
如果query.Part_Information
为 null,则前两个表达式的结果为Sting.Empty
,最后一个表达式的结果为Nothing
。
推荐阅读
- electron - Electron 应用程序仅在后台运行且不显示
- php - 为什么我不能从我的 php codeigniter 运行 python selenium 脚本?
- php - 为什么 Google App Engine Standard 使用 PHP 5.5?
- java - 为什么 pack() 不能双向调整大小(放大和缩小) - Swing
- django - DRF post请求多个内部序列化器
- c# - Xamarin Forms iOS 应用程序在启动时突然崩溃
- php - 谷歌云存储 500 内部服务器错误
- python - 将 .tsv 文件转换为 .txt 会创建意外字符,可能修复吗?
- symfony - PHP 致命错误:未捕获的 RuntimeException:未定义 APP_ENV 环境变量
- javascript - 使用来自输入的数据更新数组