首页 > 解决方案 > 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()}");
    }                     
}

标签: sql-serverlinq-to-sql

解决方案


我发现这是完美的工作:

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()}");
}                     

}

如果它可以帮助别人...


推荐阅读