我想反转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>"));
}
}
还有另一种方法可以扭转它吗?
答案 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
};