none
Bitte Hilfe bei Linq Abfrage RRS feed

  • Frage

  • Hallo,

    ich habe ein Problem mit einer Abfrage. Die Abfrage funktioniert in Linqer tadellos, leider nicht in meinem Projekt.

    from tmp in db.Tempdates
    join UT in db.UrlTracking on new { Column1 = tmp.Column1 } equals new { Column1 = (DateTime?)Convert.ToDateTime(Convert.ToDateTime(UT.TrackingDate)) } into UT_join
    from UT in UT_join.DefaultIfEmpty()
    group new {tmp, UT} by new {
      tmp.Column1
    } into g
    select new {
      g.Key.Column1,
      Hits = g.Count(p => p.UT.TrackingDate != null)
    }

    im Projekt sieht die Abfrage so aus:

    var test = (from tmp in dateList
                        join UT in db.UrlTracking on new { datevalue = (DateTime?)tmp.datevalue.Date } equals new { datevalue = (DateTime?)UT.TrackingDate.Date } into UT_join
                        from UT in UT_join.DefaultIfEmpty()
                        group new { tmp, UT } by new
                        {
                            tmp.datevalue,
    
                        } into g
                        select new 
                        {
                            date = g.Key.datevalue,
                            LinkHits = g.Count(p => p.UT.TrackingDate != null)
                        }).ToList();

    Im Projekt erhalte ich aber bei Ausführung die Fehlermeldung "System.NullReferenceExeption: Object reference not set to an instance of an object". Die Stelle "p.UT.TrackingDate != null" ist dabei markiert.

    Das Objekt 'datelist' enthält nur eine DateTime-Spalte mit Datumsangaben.

    Ziel ist darzustellen, wie viele Datumsangaben in TrackingDate zu einem bestimmten Datum anfallen.

    Also z.B.

    date           | LinkHits

    01.01.2021 | 0

    02.01.2021 | 4


    .::datekk::.


    • Bearbeitet datekk2 Dienstag, 4. Mai 2021 08:15
    Dienstag, 4. Mai 2021 08:14

Alle Antworten

  • Hi,
    wenn es in "dateList" Datumswerte gibt, die es in "db.UrlTracking" nicht gibt, dann ist "p.UT" null und es kommt der ausgewiesene Fehler (NullReferenceExeption). Du solltest diesen Fall auch abfangen, z.B. so:

            var test = (from tmp in dateList
                        join UT in db.UrlTracking on new { datevalue = (DateTime?)tmp.datevalue.Date } equals new { datevalue = (DateTime?)UT.TrackingDate.Date } into UT_join
                        from UT in UT_join.DefaultIfEmpty()
                        group new { tmp, UT } by new { tmp.datevalue, } into g
                        select new
                        {
                          date = g.Key.datevalue,
                          LinkHits = g.Count(p => p.UT != null && p.UT.TrackingDate != null)
                        }).ToList();


    --
    Best Regards / Viele Grüße
    Peter Fleischer (former MVP for Developer Technologies)
    Homepage, Tipps, Tricks

    Dienstag, 4. Mai 2021 13:33