Tôi đã ghi một truy vấn LINQ để điền vào một listview nhưng nó sử dụng phương thức .ToString() mà rõ ràng là không được phép. Khi tôi sử dụng đoạn mã sau tôi nhận được thông báo lỗi:Sử dụng ToString() trong truy vấn LINQ?
Error: LINQ to Entities does not recognize the method 'System.String ToString()' method, and this method cannot be translated into a store expression
Có cách nào để sử dụng ToString() trong LINQ hoặc nếu đó là không thể là giải pháp cho chuyển đổi một DateTime để String trong truy vấn là gì . Hãy hôn mà ReleaseDateName là một chuỗi và ngày phát hành là một 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();
}
Tôi mới sử dụng LINQ to Etityes, bạn có thể giải thích cách phần .Select hoạt động không? –
@MatthewVerstraete '.Select' chỉ là cú pháp phương thức. Nó giống như khi bạn sử dụng 'select' trong cú pháp truy vấn. 't => {...}' là một biểu thức lambda. Về cơ bản nó nói về mỗi phần tử chúng ta chọn làm bất cứ điều gì ở bên phải của toán tử '=>'. – evanmcdonnal
Cảm ơn, tôi cũng đã suy nghĩ về việc chỉ chuyển đổi này thành một Proc trên máy chủ SQL vì nó là một tham gia khá phức tạp. Chuyển đổi sang một Proc cũng sẽ cho phép tôi thực hiện logic trên phía máy chủ của SQL. Sẽ có một nâng cấp hiệu suất khá để đi proc vs phương pháp của bạn? –