- 浏览: 1525204 次
- 性别:
- 来自: 杭州
文章分类
- 全部博客 (525)
- SEO (16)
- JAVA-EE-Hibernate (6)
- JAVA-EE-Struts (29)
- JAVA-EE-Spring (15)
- Linux (37)
- JAVA-SE (29)
- NetWork (1)
- CMS (14)
- Semantic Research (3)
- RIA-Flex (0)
- Ajax-Extjs (4)
- Ajax-Jquery (1)
- www.godaddy.com (0)
- SSH (34)
- JavaScript (6)
- SoftwareEngineer (9)
- CMMI (0)
- IDE-Myeclipse (3)
- PHP (1)
- Algorithm (3)
- C/C++ (18)
- Concept&Items (2)
- Useful WebSite (1)
- ApacheServer (2)
- CodeReading (1)
- Socket (2)
- UML (10)
- PowerDesigner (1)
- Repository (19)
- MySQL (3)
- SqlServer (0)
- Society (1)
- Tomcat (7)
- WebService (5)
- JBoss (1)
- FCKeditor (1)
- PS/DW/CD/FW (0)
- DesignPattern (11)
- WebSite_Security (1)
- WordPress (5)
- WebConstruction (3)
- XML|XSD (7)
- Android (0)
- Project-In-Action (9)
- DatabaseDesign (3)
- taglib (7)
- DIV+CSS (10)
- Silverlight (52)
- JSON (7)
- VC++ (8)
- C# (8)
- LINQ (1)
- WCF&SOA (5)
- .NET (20)
- SOA (1)
- Mashup (2)
- RegEx (6)
- Psychology (5)
- Stock (1)
- Google (2)
- Interview (4)
- HTML5 (1)
- Marketing (4)
- Vaadin (2)
- Agile (2)
- Apache-common (6)
- ANTLR (0)
- REST (1)
- HtmlAnalysis (18)
- csv-export (3)
- Nucth (3)
- Xpath (1)
- Velocity (6)
- ASP.NET (9)
- Product (2)
- CSS (1)
最新评论
-
lt26w:
理解成门面模式应该比较容易明白吧
FacadePattern-Java代码实例讲解 -
lt26w:
看下面的例子比较明白.
FacadePattern-Java代码实例讲解 -
javaloverkehui:
这也叫文档,别逗我行吗,也就自己看看。
HtmlCleaner API -
SE_XiaoFeng:
至少也应该写个注释吧。
HtmlCleaner API -
jfzshandong:
...
org.springframework.web.filter.CharacterEncodingFilter 配置
最近忽然想把过去写的IPMSG更新一下,把聊天记录部分改用linq实现,感觉确实比DOM直观多了,写下来希望对新手有帮助,linq to XML 所用的类都封装在System.Xml.Linq下,下面的例子还会需要System.Linq
首先创建log文件
string strNow = DateTime.Now.ToString("yyyyMMddhhmmss"
);
FileInfo fiXML = new FileInfo(@"XML\xmlLog.xml"
);
//如果文件不存在
if (!(fiXML.Exists))
{
//创建xml文档
XDocument xelLog =new XDocument(
new XDeclaration("1.0"
, "utf-8"
, "no"
),
new XElement("ipmsg"
,
new XElement("msg_log"
,
new XElement("user"
, "Bin"
),
new XElement("logdate"
, strNow),
new XElement("message"
, "一条xml linq测试"
)
)
)
);
xelLog.Save(@"XML\xmlLog.xml"
);
}
如果要给元素加属性用XAttribute,和子节点一起做参数传进去,比如在这里我们想给每条聊天记录都加一个ID:
new XAttribute(
"logid"
, "00001"
),
输出文档如下:
<?xml version="1.0"
encoding="utf-8"
standalone="no"
?>
<netmsg>
<msg_log logid="00001"
>
<user>Bin
</user>
<logdate>20081217090733
</logdate>
<message>一条xml linq测试
</message>
</msg_log>
</netmsg>
当然也可以用元素的形式表示ID,个人习惯问题,属性和元素功能基本是一样的,可以互相转换。
一、检索记录
首先要有检索功能,查看全部聊天记录:
Array queryXML = LinqHeper.getXmlLOGInFo();
返回Array,自己随意处理,比如:
dgvStudent.DataSource = queryXML;
下面是getXmlLOGInFo方法:
//实例化XMLog
XElement xelem = XElement.Load(@"XML\xmlLog.xml");
//执行linq检索(xmlLOG)
var queryXML = from xmlLog in xelem.Descendants("msg_log"
)
//条件都加在这里,注意条件用双等,多条件用 && 连接
//用户名是Bin的所有记录
//where xmlLog.Element("user").Value == "Bin"
select new {
用户名 = xmlLog.Element("user"
).Value.ToUpper()
, 时间 = xmlLog.Element("logdate"
).Value
, 消息 = xmlLog.Element("message"
).Value
};
return queryXML.ToArray();
上边的语句也可以写成lambda表达式的形式(其实就是"=>"前是参数,后面是返回值)
var queryXML = xelem.Descendants("msg_log"
)
.Where(x =>( x.Element("logid"
).Value == "1334255"
&& x.Element("user"
).Value == "bin"
))
.Select(x => new {
用户名 = x.Element("user"
).Value.ToUpper()
, 时间 = x.Element("logdate"
).Value
, 消息 = x.Element("message"
).Value });
不过还是比较推荐前面写的方法,比较直观,方便维护(在这个例子中lambda表达式没有很大优势,一般情况,还是可以减少很多代码的)
注:如果想分页就用Skip与Take方法,比如queryXML.Skip(45).Take(15)就是第四页(我没有用dgv)
二、添加记录
下面需要用到System.Collections.Generic
strNow = DateTime.Now.ToString("yyyyMMddhhmmss"
);
Dictionary<string,string> dicLog = new Dictionary<string,string>();
dicLog.Add("user"
, "Bin"
);
dicLog.Add("logdate"
, strNow);
dicLog.Add("message"
, "这是一条添加记录测试"
);
LinqHeper.insLog(dicLog);
insLog方法:
//实例化XMLog
XElement xelem = XElement.Load(@"XML\xmlLog.xml"
);
//执行linq添加(xmlLOG)
XElement newLog = new XElement("msg_log"
,
new XElement("user"
, (string)dicLog["user"
]),
new XElement("logdate"
, (string)dicLog["logdate"
]),
new XElement("message"
, (string)dicLog["message"
])
);
xelem.Add(newLog);
//保存xml
xelem.Save(@"XML\xmlLog.xml"
);
三、修改记录
如果一个朋友换了一个用户名,我们希望可以把他现在和过去的聊天记录在一起显示,就要把过去的名字全换成现在的新名,例子:
var queryXML = from xmlLog in xelem.Descendants("msg_log"
)
//所有名字为Bin的记录
where xmlLog.Element("user"
).Value == "Bin"
select xmlLog;
foreach (XElement el in queryXML)
{
el.Element("user"
).Value = "LiuBin"
;//开始修改
}
四、删除记录
。。这种软件应该没有必要删除聊天记录,但是既然标题是增查删改,就硬加上了,如果觉得记录占的地方太大了,我们想把2008年1月1日(或1个月前)以前的记录全部删除,就用如下方法:
//实例化XMLog
XElement xelem = XElement.Load(@"XML\xmlLog.xml"
);
var queryXML = from xmlLog in xelem.Descendants("msg_log"
)
where Convert.ToInt32(xmlLog.Element("logdate"
).Value) < 20080101010101
select xmlLog;
queryXML.Remove();
xelem.Save(@"XML\xmlLog.xml"
);
发表评论
-
WPF/Silverlight深度解决方案:(六)HLSL自定义渲染特效之完美攻略(上)
2010-01-13 16:40 2367Shader Effect 中文名称为“渲染特效”或“滤镜” ... -
Silverlight Image Source URI : 一个反斜杠引发的血案
2010-01-12 13:10 3581Silverlight Image Source U ... -
SilverLight跨域访问及其常用的几种解决方法
2010-01-06 16:59 5430SilverLight 出于对安全性的考虑默认情况下对UR ... -
有关silverlight中调用webservice的问题!!
2010-01-06 15:07 3309System.InvalidOperationExceptio ... -
Server.UrlEncode、HttpUtility.UrlDecode不同编码
2010-01-06 12:39 3259Server.UrlEncode、HttpUtility.U ... -
LINQ to XML一些基本查询
2010-01-06 12:34 2035/**/ /// /根据元素的名称进行筛选(有命名空 ... -
使用LINQ to XML来查询XML
2010-01-06 12:16 2747使用LINQ to XML来查询XML ... -
给弟弟起步学习软件开发(.Net 方向)的指导,博友们帮助看看,提些意见给他。
2010-01-06 11:15 960在我学习的时候走了至少3年的弯路,那个时候没有人告诉我该如 ... -
LINQ to XML 用 LINQ 查询 XML
2010-01-06 11:15 1508LINQ to XML 用 LINQ 查询 XML ... -
使用XML LINQ查询和转换XML
2010-01-06 10:37 1492本章包括 n XML LI ... -
XML LINQ简介
2010-01-06 10:32 1553本章包括 n XML LINQ ... -
.Net 中string与byte[]相互转换
2010-01-05 16:43 2422public static byt ... -
正则表达式收集(持久更新)
2010-01-04 15:56 1109正则表达式收集( ... -
网上搜集的webbrower的资料,很有借鉴价值
2010-01-04 15:54 1891http://hi.baidu.com/lovemoe/ ... -
Lexware Assembly Reference Tool for Visual Studio 2005 / 2008
2010-01-04 10:35 1878http://www.codeproject.com/KB/m ... -
Visual Studio的 诡异bug(mscorlib无法引用)
2010-01-04 09:27 2515这个需要手动修改项目的配置文件 添加 <Re ... -
[C#实战]Google Map开发实战参考
2010-01-03 16:48 5769[C# 实战] ... -
复习一下 .Net: delegate(委托)、event(事件) 的基础知识,从头到尾实现事件!
2010-01-02 23:33 2561有这样一道 .Net/C# 面试题:请以事件的概念实现 ... -
ADO.NET Entity Framework简介
2009-12-21 18:46 2689下一代的ADO.NET的目标是要解决关系数据模型和实际应用程序 ...
相关推荐
“LinqToSql”是文件名中的一个关键词,指的是LINQ to SQL,这是.NET Framework中的一个ORM(对象关系映射)工具,允许开发者使用C#或VB.NET的 LINQ 语法与SQL Server数据库进行交互。以下是对LINQ to SQL主要概念的...
在本教程中,我们将重点讨论如何利用LINQ to SQL实现分层架构,并结合GridView控件进行数据的增删改操作,这对于新手在进行三层项目开发时是非常实用的。 首先,让我们了解什么是LINQ to SQL。它是.NET Framework ...
以Linq to Entities为例,假设我们有一个`Student`实体类和一个`DbContext`对象`context`: 1. 添加(Add):创建一个新的学生实例并添加到数据库。 ```csharp var newStudent = new Student { Name = "张三", Age ...
- **增删改**:使用LINQ to SQL进行数据库的插入、更新和删除操作。 - **查询句法**:学习LINQ的查询表达式和方法语法,如何编写复杂的查询。 - **存储过程**:调用数据库中的存储过程,并将结果转换为对象。 - **...
这里的“商业源码-编程源码-Linq三层模式之增删改源码.zip”提供了一个使用LINQ实现的三层架构示例,用于演示在数据库操作中的基本增删改功能。三层架构是一种常见的软件设计模式,它将应用程序分为表示层、业务逻辑...
6. **Linq Demo**:压缩包中的"LinqDemo"可能是一个演示项目,包含了如何在实际应用中使用Linq进行数据操作的实例代码,包括三层架构的实现和Linq to ODBC的使用。 7. **www.pudn.com.txt**:这个文件可能是从pudn....
同时,事务管理也是 Linq to SQL 的一个重要方面,通过 `TransactionScope` 或 `DbContext.Database.BeginTransaction` 等方式可以开启和管理事务。 #### 9. 继承与关系 Linq to SQL 支持实体间的继承关系和关联...
3. **增删改**:如何使用LINQ to SQL进行数据的插入、更新和删除操作。 4. **查询句法**:学习LINQ的查询表达式和方法语法,以及如何使用它们来检索数据。 5. **存储过程**:如何调用数据库中的存储过程,并将结果...
1. **实例化**:首先,需要创建DataContext的一个实例,传入数据库的连接字符串或DbConnection对象。 2. **数据表映射**:定义实体类,并使用[Table]属性标记,告诉DataContext这些类对应数据库中的哪些表。 3. **...
LINQ (Language Integrated Query) 是.NET Framework中的一个强大功能,它将查询语句直接集成到C#和Visual Basic等编程语言中,提供了统一的方式来处理各种数据源,包括对象、数据库、XML等。本教程主要关注的是LINQ...
Linq支持的查询可以针对不同数据源进行,包括但不限于SQL数据库(LINQ to SQL)、对象集合(LINQ to Objects)、XML文档(LINQ to XML)等,实现了数据查询的泛型化和统一化。 #### 二、LINQ to Object **1. 基本...
本文将深入探讨如何利用Silverlight、WCF RIA(Windows Communication Foundation Rich Internet Applications)Services以及Linq(Language Integrated Query)技术,构建一个名为"Student"的实例。这三种技术的...
对于初学者来说,这是一个很好的起点,能够帮助理解LINQ的基本原理和应用场景。对于有经验的开发者,重温这些基础知识也能巩固技能,提高开发效率。无论是教学还是自学,这都是一份有价值的资源。
例如,你可以使用Load方法加载XML文件,然后通过SelectNodes或SelectSingleNode方法查询XML节点,再用RemoveChild、AppendChild等方法进行增删改操作。 其次,XPath和LINQ to XML是C#中处理XML的两种高效方式。...
本示例项目"三层模式之增删改源码"主要展示了如何在.NET Framework 2.0和SQL Server 2005环境下,利用LINQ(Language Integrated Query)技术构建一个具备基本CRUD(Create、Read、Update、Delete)功能的三层架构...
同时,需要为每个实体类创建一个XML映射文件(或使用Fluent NHibernate进行代码配置),定义字段类型、主键、外键等信息。映射文件告诉Nhibernate如何将类与数据库表关联。 **SessionFactory与Session** ...
在C#中,XML文件是一种常见的数据存储和交换格式,尤其在配置文件的应用上非常广泛。本篇将探讨C#中对XML文件的基础操作,包括创建...在实际开发中,还可以结合LINQ to XML等更现代的方法,提高代码的简洁性和可读性。