Mam pisanie kwerendy LINQ do wypełnienia listview, ale używa on metody .ToString(), który apparetly jest niedozwolone. Gdy używam poniższy kod pojawia się komunikat o błędzie:Korzystanie z ToString() w zapytaniach LINQ?
Error: LINQ to Entities does not recognize the method 'System.String ToString()' method, and this method cannot be translated into a store expression
Czy istnieje sposób, aby użyć toString() w LINQ lub jeżeli nie jest to możliwe, co jest rozwiązaniem do konwersji DateTime do String w zapytaniu . Proszę knot że ReleaseDateName jest ciągiem i ReleaseDate jest DateTime
using (var db = new ReleaseInfo())
{
lvReleaseInfo.DataSource = (from r in db.MediaReleases
join rn in db.ReleaseNames
on new { MediaReleaseID = r.MediaReleaseID, CultureCodeID } equals new { rn.MediaReleaseID, rn.CultureCodeID }
join plat in db.MediaPlatforms
on new { MediaPlatformID = r.MediaPlatformID, CultureCodeID } equals new { plat.MediaPlatformID, plat.CultureCodeID }
join pub in db.MediaPublishers
on new { MediaPublisherID = r.MediaPublisherID, CultureCodeID } equals new { pub.MediaPublisherID, pub.CultureCodeID }
join c in db.Countries
on new { CountryID = r.CountryID, CultureCodeID } equals new { c.CountryID, c.CultureCodeID }
join rd in db.ReleaseDates
on new { MediaReleaseID = r.MediaReleaseID, CultureCodeID } equals new { rd.MediaReleaseID, rd.CultureCodeID }
join a in db.AffiliateLinks
on new { MediaReleaseID = r.MediaReleaseID, CultureCodeID } equals new { a.MediaReleaseID, a.CultureCodeID }
where r.SectionID == SectionID
select new
{
rn.ReleaseTitle,
plat.MediaPlatformName,
pub.MediaPublisherName,
c.CountryName,
ReleaseDate = (rd.ReleaseDate == null ? rd.ReleaseDateName : rd.ReleaseDate.ToString()),
a.AffiliateLinkAddress
}).ToList();
lvReleaseInfo.DataBind();
}
Jestem nowym użytkownikiem LINQ dla Etityes, czy możesz wyjaśnić, jak działa funkcja .Select? –
@MatthewVerstraete '.Select' jest po prostu składnią metody. Jest taki sam, jak w przypadku użycia 'select' w składni zapytania. 't => {...}' jest wyrażeniem lambda. Zasadniczo mówi się, że każdy element, który wybieramy, robi to, co jest po prawej stronie operatora '=>'. – evanmcdonnal
Dzięki, myślałem również o konwersji tego na Proc na serwerze SQL, ponieważ jest to dość złożone połączenie. Konwersja na Proc pozwoliłaby mi również na logikę po stronie serwera SQL. Czy przydałoby się przyzwoite ulepszenie wydajności, aby przejść proc i metodę? –