如何反转LINQ到SQL查询

本文关键字:SQL 查询 LINQ 何反转 | 更新日期: 2023-09-27 17:59:50

我想反转LINQ到SQL查询的输出。和.RReverse()不起作用,只是使页面崩溃。

protected void Page_Load(object sender, EventArgs e)
{
    NewsDataContext db = new NewsDataContext();
    var News = from news in db.News                   
               select new 
               {
                   ID = news.NewsID,
                   kort = news.Short
               };
    foreach (var newa in News)
    {
        Panel1.
        Controls.
        Add(new LiteralControl(newa.kort + 
                               "</br>" + 
                               "<a href=Full.aspx?id=" + 
                               newa.ID + 
                               ">Read The full Article</a>"));
    }
}

还有其他方法可以扭转这种局面吗?

如何反转LINQ到SQL查询

如果您要显示的是新闻,为什么不使用OrderBy(或OrderByDescending)按您想要的顺序获取项目,而不是按数据库中聚集索引的相反顺序。

我想不出在任何情况下需要在Linq到Sql中使用Reverse。

示例(对不起,如果语法关闭,我更喜欢Lamda的):

var News = 
     (from news in db.News   
     orderby news.Date descending                 
     select new 
         {
               ID = news.NewsID,
               kort = news.Short
         });

我猜SQL Server不知道如何将Reverse转换为t-SQL命令,所以会出现异常。您可能需要从数据库中提取查询结果,然后将其反转。

var News = (from news in db.News                   
               select new 
               {
               ID = news.NewsID,
               kort = news.Short
               }).AsEnumerable().Reverse();

问题是:你在逆转什么?

SQL存储没有在News表上定义特定的顺序,因此简单地"反转"查询结果而不定义任何顺序是没有意义的。

这样的怎么样?

var News = from news in db.News    
           order by news.PostedTime descending               
           select new 
           {
               ID = news.NewsID,
               kort = news.Short
           };