2016-04-20 7 views
2

Ich habe eine Abfrage in SQL-Abfrage als wie unten:Wie konvertiert man diese SQL zu LINQ in C#?

with pagedetail as 
(
    select 
     c.componentrefid, l.name, c.startdate, 
     ROW_NUMBER() over(PARTITION By c.componentrefid order by c.startdate desc) as rownumber 
    from 
     FM_componentTransaction as c 
    inner join 
     FM_LK_statusinfo as l on c.Statusinforefid = l.refid 
    inner join 
     fm_scriptinfo as s on s.Refid = c.ScriptRefId 
    where 
     s.CustomerInfoRefId = '85629125-7072-4EFE-9201-97E088E126C6' 
) 
select 
    pd.* 
from 
    pagedetail pd 
where 
    pd.rownumber = 1 

ich den Ausgang dieses bekommen. Jetzt meine Fragen ist, wie diese Abfrage mit Entity Framework zu implementieren?

+0

wo bist du r Frage? –

+0

habe ich jetzt bearbeitet. Bitte überprüfen Sie es – aaroki

Antwort

2

Ich weiß, dass dies keine direkte Antwort auf Ihre Frage ist, aber ein Ansatz wäre, eine gespeicherte Prozedur in SQL zu erstellen und dann einfach die gespeicherte Prozedur in Entity Framework aufzurufen.

-Code zuerst: How to call Stored Procedure in Entity Framework 6 (Code-First)?

Datenbank Erstens: https://msdn.microsoft.com/en-us/data/gg699321.aspx

+0

ja zapnologica. Ich mache dies durch gespeicherte Prozedur – aaroki

+0

Dann alles, was Sie tun müssen, ist ein Datenbank erstes Modell Ihrer Datenbank erstellen. Und dann, wenn Sie eine neue Instanz Ihres 'Db Context' instanziieren, können Sie' dbContext.StoredprocedureName' gehen. – Zapnologica

1

Angenommen, Sie das folgende Modell haben:

public class ComponentTransaction 
{ 
    public Guid componentrefid { get; set; } 
    public string name { get; set; } 
    public DateTime startdate { get; set; } 
    public Guid Statusinforefid { get; set; } 
    public Guid ScriptRefId { get; set; } 
} 

public class Statusinfo 
{ 
    public Guid refid { get; set; } 
} 

public class Scriptinfo 
{ 
    public Guid refid { get; set; } 
    public Guid CustomerInfoRefId { get; set; } 
} 

Der Code kann wie folgt aussehen:

Db db = new Db(); 
Guid customerInfoRefId = new Guid("85629125-7072-4EFE-9201-97E088E126C6"); 
var res = db.ComponentTransactions 
    .GroupBy(c => c.componentrefid) 
    .Select(g => g.OrderByDescending(c => c.startdate).First()) 
    .Join(db.Statusinfos, c => c.Statusinforefid, l => l.refid, (c, l) => c) 
    .Join(db.Scriptinfos.Where(s => s.CustomerInfoRefId == customerInfoRefId), 
     c => c.ScriptRefId, s => s.refid, (c, s) => c); 
+0

Vielen Dank ivan. Lass mich diese Lösung ausprobieren – aaroki

Verwandte Themen