RssReader(Linq to xml)

2008年02月17日 2:51 下午  |  分类:Develop

准确地说谈不上是一个阅读器,因为目前只显示rss源的标题

首先用一个xml文档来存储一些rss列表,结构如下:

<?xml version="1.0" encoding="utf-8" ?>
<feeds>
<feed enable="true">
<site>幻想曲.Net</site>
<url>http://www.yibin001.com</url>
<rss>http://www.yibin001.com/rss.axd</rss>
</feed>
<feed enable="true">
<site>大脑门</site>
<url>http://www.iceapple.net</url>
<rss>http://www.iceapple.net/syndication.axd</rss>
</feed>
<feed enable="true">
<site>CnBlogs</site>
<url>http://www.cnblogs.com</url>
<rss>http://www.cnblogs.com/rss</rss>
</feed>
<feed enable="true">
<site>BlueIdea</site>
<url></url>
<rss>http://bbs.blueidea.com/rss.php</rss>
</feed>
</feeds>

enable属性表示该站点是否有效,false表示无效

展示页面中的dropdownlist数据源就来自于此

选择一个rss源,点击read,显示

public class RssItem
{

public RssItem()
{
//
// TODO: Add constructor logic here
//
}
public RssItem(string title, string url, DateTime date)
{
Title = title;
URL = url;
PubDate = date;
}
public string Title { get; set; }
public string URL { get; set; }
public DateTime PubDate { get; set; }
public List<RssItem> GetList(string rssurl)
{
List<RssItem> list = new List<RssItem>();
//try
//{
XDocument doc = XDocument.Load(rssurl);
var feeds = from feed in doc.Descendants("item")
select new RssItem
{
PubDate = Convert.ToDateTime(feed.Element("pubDate").Value),
Title = feed.Element("title").Value,
URL = feed.Element("link").Value
};
list = feeds.ToList();
//}
//catch
//{

//}
return list;
}
}

因暂无.net 3.5的空间,故无法放出演示了
http://www.yibin001.comhttp://www.yibin001.com/wp-content/uploads/20080217/135729_RssReader.rar

Linq to sql之简单的分页

2008年02月15日 5:20 下午  |  分类:Develop

费话不多说,主要是Linq中的Skip及Take这二个扩展方法

int RecordCount = 0;
int PageCount = 1;
DataClassesDataContext data = new DataClassesDataContext();
int SkipIndex = 0;
private string _PageString = "";
public string PageString
{
get {
return _PageString;
}
set {
_PageString = value;
}
}
protected void Page_Load(object sender, EventArgs e)
{
RecordCount = data.Orders.Count(); //得到记录数
PageCount = (int)Math.Ceiling((decimal)RecordCount / 10); //以10条记录为一页,计算总页码
int page = 1;
if (!string.IsNullOrEmpty(Request.QueryString["page"]))
page = Convert.ToInt16(Request.QueryString["page"]);
SkipIndex = (page-1) * 10; //计算起始索引,以供后面的Skip扩展方法之用

//拼接分页代码
StringBuilder sb = new StringBuilder();
for (int i = 1; i < PageCount; i++)
{
sb.AppendFormat(@" <a href=""?page={0}"">{0}</a> ",i);
}
_PageString = sb.ToString();
bind();
}
void bind()
{
//奇妙的Linq表达式
var q = (from c in data.Orders select new
{ CustomerID = c.CustomerID, ShipAddress=c.ShipAddress,ID = c.OrderID}
).Skip(SkipIndex).Take(10);
this.GridView1.DataSource = q;
this.GridView1.DataBind();
}

当显示的是第一页时,看linq表达式中为我们动态生成了什么样的语句:

SELECT TOP 10 [t0].[CustomerID], [t0].[ShipAddress], [t0].[OrderID] AS [ID]
FROM [dbo].[Orders] AS [t0]

是不是觉得非常熟悉?
相当Easy