için IQueryable <> dönüştürülemez Aşağıdaki LINQ kodu vardır:IOrderedQueryable hatası
var posts = (from p in db.Posts
.Include("Site")
.Include("PostStatus")
where p.Public == false
orderby p.PublicationTime
select p);
if (!chkShowIgnored.Checked) {
posts = posts.Where(p => p.PostStatus.Id != 90);
}
Bu son satırı (burada ekstra) bana hata veriyor:
dolaylı tip 'Sistemini dönüştürülemez. Linq.IQueryable 'ila' System.Linq.IOrderedQueryable '.
Bunun ne anlama geldiğinden emin değilim ...
Neden bu hatayı alıyorum?
Sorguya "orderby" tümceyi ekledikten sonra, iyi bir derleme yapmadan önce göründü, bu yüzden neler olup bittiğini anladım, ama parmağımı içine koyamıyorum.
Her ikisi de bir çekicilik gibi çalıştı, teşekkürler! Ne demek istiyorsun ortada değil, sonunda sipariş veriyoruz? Sorgu numaralandırıldıktan sonra gerçek SQL tüm bunlar üretilip çalıştırılmıyor mu? LINQ, WHERE'leri "birleştirmek" için yeterince akıllı olacağını düşünmüştüm ... –
Satın aldığımız son şeyi OrderBy yaparak, imzayı değiştiren OrderBy, daha kolay olan "IQueryable" seçeneğine sahibiz. oluşturmak için. Söylediğiniz gibi, sağlayıcı (EF, LINQ-to-SQL vb.), Her halükarda yürütmeden önce her şeyi birleştirecektir. –
Aaaaah, bu son açıklama SUPER clear, gotcha. Teşekkür ederim!! –