2017-07-09 2 views
1

Ich habe zwei Tabellen wie folgt: (Datumsformat: tt/mm/jjjj)erhalten die neuesten Einträge aus der Tabelle Linq

Parameter Master-Tabelle:

Id Parameter 
    1  ST 
    2  GP 
    3  Interest  
    4  CC 

und zweiten TaxValue Tabelle:

Date  ParameterId Value 
1/1/2017 1   4 
2/1/2017 1   4.5 
1/15/2017 2   15 
3/20/2017 2   20 
3/21/2017 3   18 
4/28/2017 3   20 
1/1/2017 4   10 

Ich möchte eine Linq-Abfrage schreiben, um die neuesten Parameterwerte vom angegebenen Datum abzurufen.

Gewünschtes Ergebnis:

Date  Parameter Value 
2/1/2017 ST   4.5 
3/20/2017 GP   20 
4/28/2017 Interest 20 
1/1/2017 CC   10 

Bitte helfen (wenn ich neuesten Einträge für heute zu bekommen) !!

Antwort

1

Benutzer OrderByDescending

var result = from n in table 
     group n by n.Value into g 
     select g.OrderByDescending(t=>t.Date).FirstOrDefault(); 
+0

danke für Ihre Antwort. Ich habe den obigen Weg tatsächlich versucht, konnte aber Fehler nicht beheben. Ich habe meine Frage bearbeitet. Bitte schauen Sie, ob Sie mit dem Beitreten noch helfen können. – vivek

0

Sie können auf dem neuesten TaxValue Datensatz wie folgt eine Join tun:

var qry = (from pm in parameterMaster 

      from tax in taxValue.Where(t => t.ParameterId == pm.Id) 
           .OrderByDescending(t => t.Date) 
           .Take(1) 
           .DefaultIfEmpty() 
      select new { 
       date = tax.Date, 
       parameter = pm.Name, 
       value = tax.Value 
      }); 

var results = qry.ToList(); 
0

Sie diese Abfrage verwenden: (I getestet und es funktionierte einwandfrei)

using (testEntities db = new testEntities()) 
      {    
       var res = from element in 
           (from p in db.Parameters 
           join t in db.TaxValues on p.Id equals t.ParameterId 
           select new { Date = t.Date, Parameter = p.Parameter1, Value = t.Value, ParameterId = t.ParameterId }).ToList() 
          group element by element.ParameterId 
           into groups 
           select groups.OrderBy(p => p.Value).Last(); 
      } 

Ergebnis query

+0

@vivek Bitte upvote und akzeptiere diese Antwort, wenn es dir hilft, damit die Leute wissen, dass dies die richtige Antwort ist und ihnen hilft. –

Verwandte Themen