按 entity framework 中的两个不同字段排序结果
Order results by two differents fields in entity framework
我有广告table,我想先按特殊顺序订购,然后按最后添加顺序订购,但特殊广告有结束日期,所以我想订购特殊广告,它的日期仍然是
这是我的代码
List<S_Advertisements> moduleItems = db.S_Advertisements
.Include(x => x.S_AdvertisementsImages)
.Where(x => x.CatId == pureId && x.IsActive == true)
.OrderByDescending(x => x.IsSpecial)
.ThenByDescending(x => x.AdId).ToList();
我想知道 Entity Framework 是否会让我做这样的事情:
List<S_Advertisements> moduleItems = db.S_Advertisements
.Include(x => x.S_AdvertisementsImages)
.Where(x => x.CatId == pureId && x.IsActive == true)
.OrderByDescending(x => x.IsSpecial.Where(x => x.DateSpecialEnd > DateTime.Now))
.ThenByDescending(x => x.AdId).ToList();
where 子句的放置不影响排序。无论您按 IsSpecial
还是按 IsSpecial.Where(...)
订购,顺序都是相同的。这就是为什么您正在寻找的东西不存在的原因:没有必要。
可能是:
DateTime dtn = Datetime.Now;
var moduleItems = db.S_Advertisements
.Include(x => x.S_AdvertisementsImages)
.Where(x => x.CatId == pureId && x.IsActive == true)
.Select( x => new {
o = x,
c = x.DateSpecialEnd > dtn ? 0 : 1 // not a boolean but an order info
})
.OrderByDescending(z => z.c)
.ThenByDescending(z => z.o.AdId).ToList();
同sql:计算字段的视图,然后对视图进行排序。
我有广告table,我想先按特殊顺序订购,然后按最后添加顺序订购,但特殊广告有结束日期,所以我想订购特殊广告,它的日期仍然是
这是我的代码
List<S_Advertisements> moduleItems = db.S_Advertisements
.Include(x => x.S_AdvertisementsImages)
.Where(x => x.CatId == pureId && x.IsActive == true)
.OrderByDescending(x => x.IsSpecial)
.ThenByDescending(x => x.AdId).ToList();
我想知道 Entity Framework 是否会让我做这样的事情:
List<S_Advertisements> moduleItems = db.S_Advertisements
.Include(x => x.S_AdvertisementsImages)
.Where(x => x.CatId == pureId && x.IsActive == true)
.OrderByDescending(x => x.IsSpecial.Where(x => x.DateSpecialEnd > DateTime.Now))
.ThenByDescending(x => x.AdId).ToList();
where 子句的放置不影响排序。无论您按 IsSpecial
还是按 IsSpecial.Where(...)
订购,顺序都是相同的。这就是为什么您正在寻找的东西不存在的原因:没有必要。
可能是:
DateTime dtn = Datetime.Now;
var moduleItems = db.S_Advertisements
.Include(x => x.S_AdvertisementsImages)
.Where(x => x.CatId == pureId && x.IsActive == true)
.Select( x => new {
o = x,
c = x.DateSpecialEnd > dtn ? 0 : 1 // not a boolean but an order info
})
.OrderByDescending(z => z.c)
.ThenByDescending(z => z.o.AdId).ToList();
同sql:计算字段的视图,然后对视图进行排序。