如何反转LINQ to SQL查询

时间:2011-06-20 20:54:46

标签: c# asp.net linq-to-sql

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

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>"));
    }
}

还有另一种方法可以扭转它吗?

3 个答案:

答案 0 :(得分:14)

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

我无法想到在Linq to Sql中需要使用Reverse的任何情况。

示例(抱歉,如果语法关闭,我更喜欢Lamda):

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

答案 1 :(得分:6)

我猜SQL Server不知道如何将Reverse转换为T-SQL命令,所以你得到了一个异常。您可能需要从数据库中提取查询结果,然后将其反转。

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

答案 2 :(得分:5)

问题是:你在逆转什么?

SQL存储没有在News表上定义特定的顺序,所以简单地“反转”查询结果而没有任何已定义的顺序是没有意义的。

这样的事情怎么样?

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