我有这样的SQL查询:
select top 1 Newsletter_HTML_Tag from Newsletter_TBL
where (Newsletter_Category_ID=1)
order by Creation_Date desc
我还有一个方法,它给出了Newsletter_TBL
名为
NewsletterGellAll()
我之前尝试过,但它不起作用:
NewsletterGellAll()
.FirstOrDefault(c => c.NEWSLETTER_CATEGORY_ID == 1)
.orderby(a => a.Creation_Date)
我该如何解决?
答案 0 :(得分:0)
首先使用cat == 1查询所有项目,然后命令它获取第一个
NewsletterGellAll().Where(c=>c.NEWSLETTER_CATEGORY_ID==1)
.OrderBy(a=>a.Creation_Date)
.First();
答案 1 :(得分:0)
如果要复制SQL查询的结果,则应该是OrderByDescending
而不是OrderBy
。
此外,如果您查看您的查询:
NewsletterGetAll()
.FirstOrDefault(c => c.NEWSLETTER_CATEGORY_ID == 1)
.OrderBy(a => a.Creation_Date)
在SQL中这没关系,因为它会在ORDER BY
表达式之前评估TOP
。但是,在Linq中,它将采用与该类别匹配的第一条记录,然后订购该单条记录。所以这甚至不会构建,你不能对单个项目进行排序。
因此它应该是
NewsletterGetAll()
.Where(c => c.NEWSLETTER_CATEGORY_ID == 1)
.OrderByDescending(c => c.Creation_Date)
.FirstOrDefault();
答案 2 :(得分:0)
当您不确定不满足条件时,始终建议使用First或Default,因为这也将处理null情况。意味着,如果没有记录(具有特定条件)。
取决于订单到日期,这里考虑日期是升序,(旧日期优先)
NewsletterGellAll().Where(c=>c.NEWSLETTER_CATEGORY_ID==1)
.OrderBy(a=>a.Creation_Date)
.FirstOrDefault();
答案 3 :(得分:0)
使用LINQPad并进行专业的LINQ和SQL查询。这是linqpad