-2

我有这样的 SQL 查询:

  select top 1 Newsletter_HTML_Tag  from Newsletter_TBL
     where (Newsletter_Category_ID=1)
     order by Creation_Date desc

我也有一个方法,它给了我来自Newsletter_TBL命名的所有记录的列表:

时事通讯GellAll()

并且我之前尝试过,但它不起作用:

NewsletterGellAll()
   .FirstOrDefault(c => c.NEWSLETTER_CATEGORY_ID == 1)
   .orderby(a => a.Creation_Date)

我该如何解决?

4

4 回答 4

0

使用 LINQPad 并进行专业的 LINQ 和 SQL 查询。这是linqpad

于 2014-03-03T11:07:11.980 回答
0

如果您想复制 SQL 查询的结果,则应该使用它OrderByDescendingOrderBy

此外,如果您查看查询:

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();
于 2014-03-03T10:40:36.877 回答
0

当您不确定条件不会被满足时,始终建议使用 First 或 Default ,因为这也将处理 null 情况。表示,如果没有记录(有特定条件)。

也取决于日期的顺序,这里认为日期是升序的,(较早的日期优先)

NewsletterGellAll().Where(c=>c.NEWSLETTER_CATEGORY_ID==1)
                    .OrderBy(a=>a.Creation_Date)
                    .FirstOrDefault();
于 2014-03-03T10:50:18.570 回答
0

先用cat==1查询所有item,然后排序得到第一个

NewsletterGellAll().Where(c=>c.NEWSLETTER_CATEGORY_ID==1)
                   .OrderBy(a=>a.Creation_Date)
                   .First();
于 2014-03-03T10:35:44.567 回答