Запрос LinqToSql: иметь дело с нулевыми значениями - PullRequest
0 голосов
/ 21 апреля 2019

Вот запрос 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()}");
    }                     
}

1 Ответ

0 голосов
/ 27 апреля 2019

Я нашел это, которое работает отлично:

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

}

Если это может помочь кому-то еще ...

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...