2016-12-19 1 views
-2

Wie konvertiere ich die LINQ-Methodensyntax zu LINQ Query Syntax? Gibt es ein Tool, das dabei helfen kann? Ich weiß, LINQPAD kann von der Abfragesyntax in Methodensyntax konvertieren, aber nicht umgekehrt. Der Grund, warum ich es in die Abfragesyntax konvertieren möchte, besteht darin, eine Projektion auf ein Modell durchzuführen, so dass ich aus den in der LINQ-Abfrage erwähnten Tabellen nur wenige Spalten auswählen kann.Wie LINQ-Methodensyntax in LINQ-Abfragesyntax konvertiert wird

var queryResult = CurrentContext.Set<AM_Response_T>().Include(t => t.AM_Master_T) 
     .Include(t => t.AM_Supporting_Evidences_T) 
     .Include("AM_Supporting_Evidences_T.Ticket_Repository_T") 
     .Include(t => t.AM_Response_Validation_T) 
     .Include("AM_Response_Validation_T.Amazon_Users_T") 
     .Include("AM_Response_Validation_T.Amazon_Users_T1") 
     .Include("AM_Response_Validation_T.AM_Validator_Type_T") 
     .Include(t => t.Catalog_Type_T) 
     .Include(t => t.Skills_T) 
     .Include("Skills_T.Record_Status_T") 
     .Include("Skills_T.BE_PS_Skill_Map_T") 
     .Include("Skills_T.BE_PS_Skill_Map_T.Skills_T1") 
     .Include("Skills_T.BE_PS_Skill_Map_T.Skills_T1.Record_Status_T") 
     .Include("Skills_T.BE_PS_Skill_Map_T.Skills_T1.BE_PS_Skill_Map_T") 
     .Include("Skills_T.BE_PS_Skill_Map_T.Skills_T1.KE_PS_Skill_Map_T") 
     .Include("Skills_T.KE_PS_Skill_Map_T") 
     .Include("Skills_T.KE_PS_Skill_Map_T.Skills_T1") 
     .Include("Skills_T.KE_PS_Skill_Map_T.Skills_T1.Record_Status_T") 
     .Include("Skills_T.KE_PS_Skill_Map_T.Skills_T1.BE_PS_Skill_Map_T") 
     .Include("Skills_T.KE_PS_Skill_Map_T.Skills_T1.KE_PS_Skill_Map_T") 
     .Include(t => t.Skill_Levels_T) 
     .Include(t => t.Skills_T.Skill_Levels_T) 
     .Include(t => t.Questions_T) 
     .Include(t => t.Questions_T.Question_Type_T) 
     .Include(t => t.AM_Master_T.AM_Master_Member_Map_T) 
     .Include(t => t.AM_Master_T.AM_Master_SPR_Map_T) 
     .Include(t => t.AM_Master_T.AM_Master_FSPR_Map_T) 
     .Include(t => t.AM_Master_T.AM_Master_FRP_Map_T) 
     .Include(t => t.AM_Master_T.AM_Master_Org_Function_Map_T) 
     .Include(t => t.AM_Master_T.AM_Master_RRP_Map_T) 
     .Include(t => t.AM_Master_T.AM_Master_Skills_Map_T) 
     .Include(t => t.AM_Master_T.AM_Master_FCM_Position_T) 
     .Include("AM_Master_T.AM_Master_FCM_Position_T.FCM_Position_T") 
     .Include(t => t.Amazon_Users_T) 
     .Include(t => t.Amazon_Users_T1) 
     .Include(t => t.AM_Response_Activity_T); 
+3

Resharper kann hin und her schalten, sie haben eine Testversion, wo Sie testen können, ob es für Ihr Szenario funktioniert, bevor Sie es kaufen. Aber es lohnt sich für alle, die mit C# arbeiten. – nvoigt

+1

Es gibt keine tatsächliche Abfrage in dem Code, den Sie gepostet haben - also können Sie nichts konvertieren. – Enigmativity

+0

@Enigmativität meinen Sie SQL-Abfrage? –

Antwort

0

Sie müssen dafür keine Abfragesyntax verwenden, die Methodensyntax funktioniert einwandfrei. Sie können .Select() und .ToList() auf dort und Projekt zu einem Modell verwenden:

List<ModelYouWantToProjectTo> queryResult = CurrentContext.Set<AM_Response_T>() 
    .Include(t => t.AM_Master_T) 
    .Include(t => t.AM_Supporting_Evidences_T) 
    // Skipped a few 
    .Include(t => t.AM_Response_Activity_T) 
    .Select(t => new ModelYouWantToProjectTo 
     { 
      ModelProperty = t.Property, 
      // Etc... 
     }) 
    .ToList(); 

Soweit mir bekannt gibt es kein Äquivalent .INCLUDE() für Abfragesyntax. Du könntest die zwei Syntaxen mischen, aber ich finde, dass das nicht so klar liest.

+1

In einem Kommentar, da es Ihre Frage nicht wirklich beantwortet, wirkt sich die .Includes nur auf Teile des Modells aus, die Projektionen von ganzen Entitäten sind. Wenn Sie Eigenschaften auswählen und auswählen, werden die Includes ignoriert. – MarkFl

Verwandte Themen