2016-06-03 10 views
0

Ich habe diese SQL-Abfrage, dieWarum funktioniert meine Linqued-Abfrage nicht?

select u.FirstName,u.LastName,case when ei.Gender=1 then 'Male' else 'Female' end as Gender,t.Name as 'Team Name',ei.MobileNumber,u.Phone as 'Alternative Number',u.EmailAddress,ei.AlternateEmailAddress,ei.GMail,ei.Skype,FORMAT(ei.DateOfBirth,'dd-MMM-yyyy') AS BirthDay,ei.Address1,ei.Address2,ei.City,ei.[State],ei.Country,ei.ZipPostalCode,ei.Designation,ei.MasterLeaves 
from Employee e 
inner join [user] u 
on e.[User]=u.Id and IsDeleted!=1 
inner join Team t 
on e.Team=t.Id 
inner join EmployeeInformation ei 
on e.AdditionalInformation=ei.Id 

funktioniert gut, wenn ich die gleiche Abfrage linqued Abfrage dh

var EmpReport = (from Emp in db.Employees 
       join Usr in db.Users 
       on Emp.User equals Usr.Id 
       join Tm in db.Teams 
       on Emp.Team equals Tm.Id 
       join Ei in db.EmployeeInformations 
       on Emp.AdditionalInformation equals Ei.Id 
       where Usr.IsDeleted != true 
       select new { Usr.FirstName, Usr.LastName, Gender = Ei.Gender == 1 ? "Male" : "Female", Team_Name = Tm.Name, Ei.MobileNumber, Alternative_Number = Usr.Phone, Email_Address = Usr.EmailAddress, Alternate_Email_Address = Ei.AlternateEmailAddress, Ei.GMail, Ei.Skype, Birthday = Ei.DateOfBirth.ToString("dd-MMM-yyyy"), Ei.Address1, Ei.Address2, Ei.State, Ei.Country, Ei.ZipPostalCode, Ei.Designation, Ei.MasterLeaves }).ToList(); 

konvertiert es mir diesen Fehler gab

LINQ to Entities does not recognize the method 
    'System.String ToString(System.String)' method, and this method cannot 
     be translated into a store expression. 

Der Fehler ist im Wesentlichen verursacht in diesem Teil

Birthday = Ei.DateOfBirth.ToString("dd-MMM-yyyy"). 

wo ich falsch gelaufen bin?

Antwort

3

Sie erhalten den Fehler, weil DateTime.ToString() eine .NET-Funktion ist und nicht direkt in SQL übersetzt werden kann. Geben Sie entweder die DateOfBirth-Spalte in ihrem ursprünglichen Format zurück, und ändern Sie das Format, sobald Sie die Ergebnisse in Ihrer App haben, oder verwenden Sie einige der in Linq-to-Entities verfügbaren SQL-Funktionen, siehe folgende Antwort: https://stackoverflow.com/a/16364484/5785878

Verwandte Themen