Linq+Xml学习笔记
2010-11-06 10:46
239 查看
Linq是第一次接触,此前一直用个的sql。这次写一个WPF的小程序,WPF的绑定和一般C#程序的绑定不同,以往直接绑定到datatable上,很方便。WPF中多需要转换成对象集合,不方便,就在网上搜索了下Linq的用法,通过这个程序进行了一下整理。
个人感觉,Linq对Xml的操作比Xpath对Xml的操作要方便,对数据库进行操作还是看个人的喜好了。Linq对多表的操作还是感觉相当麻烦的,我个人还是倾向sql。
首先,我建立了一个Dataitem.xml的文件,放在bin目录下
数据的操作无非就是读、写、删、改。新增了一个Linqtoxml的类,在类里添加了以下方法:
加载文件:
读:
代码
个人使用的一点总结,希望和刚接触的朋友一起学习
个人感觉,Linq对Xml的操作比Xpath对Xml的操作要方便,对数据库进行操作还是看个人的喜好了。Linq对多表的操作还是感觉相当麻烦的,我个人还是倾向sql。
首先,我建立了一个Dataitem.xml的文件,放在bin目录下
数据的操作无非就是读、写、删、改。新增了一个Linqtoxml的类,在类里添加了以下方法:
加载文件:
public static string Getxmlfile() { return System.AppDomain.CurrentDomain.BaseDirectory+"Dataitem.xml"; }
读:
代码
private void butqry_Click(object sender, System.Windows.RoutedEventArgs e) { // TODO: Add event handler implementation here. XDocument doc=XDocument.Load(Linqtoxml.Getxmlfile()); var items=from i in doc.Descendants("数据项") select i; if(txt14.Text.Trim() != "") items=items.Where(k=>k.Element("客户").Value.Contains(txt14.Text.Trim())); if(txt15.Text.Trim() !="") items=items.Where(k=>k.Element("产品").Value.Contains(txt15.Text.Trim())); if(txt16.Text.Trim() !="") items=items.Where(k=>k.Element("批次").Value.Contains(txt16.Text.Trim())); if(r1.IsChecked.Value && txt17.Text.Trim() !="") { try { Convert.ToDateTime(txt17.Text.Trim()); items=items.Where(k=>Convert.ToDateTime(k.Element("日期").Value)>=Convert.ToDateTime(txt17.Text.Trim())); } catch { MessageBox.Show("第4个文本框只能输入日期!","注意",MessageBoxButton.OK,MessageBoxImage.Information); return; } } else if(r2.IsChecked.Value && txt18.Text.Trim() !="") { try { Convert.ToDateTime(txt18.Text.Trim()); items=items.Where(k=>Convert.ToDateTime(k.Element("日期").Value)<=Convert.ToDateTime(txt18.Text.Trim())); } catch { MessageBox.Show("第5个文本框只能输入日期!","注意",MessageBoxButton.OK,MessageBoxImage.Information); return; } } else if(r3.IsChecked.Value && txt17.Text.Trim() !="" && txt18.Text.Trim() != "") { try { Convert.ToDateTime(txt17.Text.Trim()); Convert.ToDateTime(txt18.Text.Trim()); items=items.Where(k=>Convert.ToDateTime(k.Element("日期").Value)>=Convert.ToDateTime(txt17.Text.Trim()) && Convert.ToDateTime(k.Element("日期").Value)<=Convert.ToDateTime(txt18.Text.Trim())); } catch { MessageBox.Show("最后2个文本框只能输入日期!","注意",MessageBoxButton.OK,MessageBoxImage.Information); return; } } if(r4.IsChecked.Value) items=items.Where(k=>Convert.ToDouble(k.Element("缺陷").Value)<=0); else if(r5.IsChecked.Value) items=items.Where(k=>Convert.ToDouble(k.Element("缺陷").Value)>0); List<Dataitem> list=new List<Dataitem>(); foreach(var item in items) { XElement p=item; Dataitem it=new Dataitem(); it.Id=Convert.ToInt32(p.Attribute("编号").Value); it.Client = p.Element("客户").Value; it.Product = p.Element("产品").Value; it.Batch = p.Element("批次").Value; it.Team = p.Element("班组").Value; it.Total =Convert.ToDouble(p.Element("总数").Value); it.Receive =Convert.ToDouble(p.Element("接收").Value); it.Inspection =Convert.ToDouble(p.Element("实检").Value); it.Bugnum =Convert.ToDouble(p.Element("缺陷").Value); it.Inspector = p.Element("检验").Value; it.Inspectionday=p.Element("日期").Value; it.Bugdescription = p.Element("缺陷描述").Value; it.Bugresponsible = p.Element("责任人员").Value; it.Bugwith = p.Element("缺陷处理").Value; list.Add(it); } if(list!=null) datamain.ItemsSource=list; else MessageBox.Show("没有找到符合条件的数据!","注意",MessageBoxButton.OK,MessageBoxImage.Information);
个人使用的一点总结,希望和刚接触的朋友一起学习
相关文章推荐
- Linq to Xml 学习笔记一
- LINQ to XML 学习笔记
- C# 2008 学习笔记 - LINQ to XML
- C# 2008 学习笔记 - LINQ to XML
- C#学习笔记:linq和xml
- LINQ to XML学习笔记
- C# 2008 学习笔记 - LINQ to XML
- C# 2008 学习笔记 - LINQ to XML
- asp.net Linq to Xml学习笔记
- C# 2008 学习笔记 - LINQ to XML
- 【linq学习笔记】1、linq to xml
- Linq学习笔记---Linq to Xml操作
- [开发笔记]-Linq to xml学习笔记
- 李浩学习计算机系列笔记——XML学习笔记
- 【OpenCV学习笔记 021】haartraining训练生成xml过程
- Linq学习笔记1(基础知识)
- LINQ学习之旅——最后一站"LTX"之XML基本操作(上)
- [C#]C#学习笔记-LINQ
- Linq学习笔记(1.6)——ToArray、ToList、ToDictionary、OfType