sql-server - LinqToSql 查询:处理空值
问题描述
这是一个 Linq-to-SQL 查询,用于检查 SQL Server 视图中是否存在 2 个值:整数 ( LOT
) 和字符串 ( ART_CODE
)。
但有时这些值是null
在视图中。在这种情况下,我会在屏幕上出现异常。
如何修改此代码以处理空值?
private void ValidProdPlusLotBtn_Click(object sender, RoutedEventArgs e)
{
int lot = Convert.ToInt32(NumLotTxtBox.Text);
string artCode = ArtCodeLB.Content.ToString();
try
{
#region Qte Restant à produire
DataClasses1DataContext dc2 = new DataClasses1DataContext();
var reste = from r in dc.Vw_MajPoids_Restant
where r.LOT == lot && r.ART_CODE == artCode
select new
{
r.PnetRestant,
r.NbuRestant
};
LotRestantTB.Text = reste.First().PnetRestant.ToString();
NbuRestantTB.Text = reste.First().NbuRestant.ToString();
#endregion
}
catch (Exception ex)
{
StackTrace st = new StackTrace();
Messages.ErrorMessages($"{st.GetFrame(1).GetMethod().Name}\n\n{ex.ToString()}");
}
}
解决方案
我发现这是完美的工作:
private void ValidProdPlusLotBtn_Click(object sender, RoutedEventArgs e)
{
int lot = Convert.ToInt32(NumLotTxtBox.Text);
string artCode = ArtCodeLB.Content.ToString();
try
{
#region Qte Restant à produire
DataClasses1DataContext dc2 = new DataClasses1DataContext();
var reste = from r in dc.Vw_MajPoids_Restant
where r.LOT == lot && r.ART_CODE == artCode
select new
{
r.PnetRestant,
r.NbuRestant
};
if(!reste.Any())
{
// Do nothing
}
else
{
LotRestantTB.Text = reste.First().PnetRestant.ToString();
NbuRestantTB.Text = reste.First().NbuRestant.ToString();
}
#endregion
}
catch (Exception ex)
{
StackTrace st = new StackTrace();
Messages.ErrorMessages($"{st.GetFrame(1).GetMethod().Name}\n\n{ex.ToString()}");
}
}
如果它可以帮助别人...
推荐阅读
- c# - DryIoc ScopedTo 现在包括父范围?
- javascript - tinymce 角度图像选择器语法
- android - 改造android - 使用多部分上传文档抛出响应代码422
- python - 从 c# mvc Web 应用程序调用调用时,flask 会话不会持续存在
- r - 如何确定时间是否在R中的其他两个时间之间?
- sql - 将 CosmosDB 中的记录计数添加到已经存在的 SQL 查询中,该查询在一个查询中返回一组现有的结果
- javascript - 按字母顺序对api的json响应进行排序
- python-3.x - 带有用于定义变量的输入的函数不会执行
- python - 就地矩阵乘法 __imatmul__ 返回修改后的对象
- javascript - 是否有一个 JS 函数可以按函数值对列表进行排序