linq 在Datatable中的使用
来源:互联网 发布:关于钢琴的软件 编辑:程序博客网 时间:2024/05/30 05:06
第一,linq取datatable某一列所有数据,我要返回给一个list<string>
class ClientStruct { public string ID = "ID"; public string Name = "Name"; public string Company = "Company"; public string CreatedDate = "CreatedDate"; } public static string[,] infoArr = new string[,] { { "1", "百度", "baidu", "201303" }, { "2", "迅雷", "xunlei", "201302" }, { "3", "谷歌", "guge", "201301" } }; protected static void LinqDataTable() { DataRow row; ClientStruct cs = new ClientStruct(); DataTable dtTable = new DataTable(); dtTable.Columns.Add(cs.ID); dtTable.Columns.Add(cs.Name); dtTable.Columns.Add(cs.Company); dtTable.Columns.Add(cs.CreatedDate); for (int i = 0; i < 3; i++) { row = dtTable.NewRow(); row[cs.ID] = infoArr[i, 0]; row[cs.Name] = infoArr[i, 1]; row[cs.Company] = infoArr[i, 2]; row[cs.CreatedDate] = infoArr[i, 3]; dtTable.Rows.Add(row); } //获取单列的数据 List <string> rr = dtTable.Select().Select(rw => rw["要转的列"].ToString()).ToList(); var lstColumn = dtTable.AsEnumerable().Select<DataRow, string>(x => x["列名"].ToString()).ToList<string>(); var _list = dtTable.AsEnumerable().Select(t => t.Field<string>("mtlPartNo")).ToList(); List<string> _list1 = dtTable.AsEnumerable().Select(t => t.Field<string>("mtlPartNo")).ToList(); //遍历DataTable,取出所有的ID List<string> lstID = (from d in dtTable.AsEnumerable() select d.Field<string>(cs.ID)).ToList<string>(); //遍历DataTable,将其中的数据对应到ClientStruct中: List<ClientStruct> list = (from x in dtTable.AsEnumerable() orderby x.Field<string>(cs.Company) select new ClientStruct { ID = x.Field<string>(cs.ID), Name = x.Field<string>(cs.Name), Company = x.Field<string>(cs.Company), CreatedDate = x.Field<string>(cs.CreatedDate) }).ToList<ClientStruct>(); //遍历DataTable,并将上面的List结果存储到Dictionary中: Dictionary<string, ClientStruct> dic = list.ToDictionary(p => p.Company); //p作为string键值来存储 }
2.DataTable是我们在进行开发时经常用到的一个类,并且经常需要对DataTable中的数据进行筛选等操作,
下面就介绍一下Datatable中经常用到的一个方法——Select,微软提供了四个函数的重载,分别是
Select()Select(string filterExpression)Select(string filterExpression, string sort)Select(string filterExpression,string sort, DataViewRowState record States)。
1) Select()——获取所有 System.Data.DataRow 对象的数组。
2) Select(string filterExpression)——按照主键顺序(如果没有主键,则按照添加顺序)获取与筛选条件相匹配的所有 System.Data.DataRow 对象的数组。
3) Select(string filterExpression, string sort)——获取按照指定的排序顺序且与筛选条件相匹配的所有 System.Data.DataRow 对象的数组。
4) Select(string filterExpression, string sort, DataViewRowState recordStates)——获取与排序顺序中的筛选器以及指定的状态相匹配的所有 System.Data.DataRow 对象的数组。
String的参数filterExpression是查询的限定式。相当于SQL查询语言中的WHERE语句(不含WHERE),其语法符合SQL语言语法。
1.在DataTable中执行DataTable.Select("条件")返回DataTable
DataRow[] drArr = dt.Select("C1=’abc’");//查询DataRow[] drArr = dt.Select("C1 LIKE ’abc%’");//模糊查询 DataRow[] drArr = dt.Select("’abc’ LIKE C1 + ’%’", "C2 DESC");//另一种模糊查询的方法 DataRow[] drArr = dt.Select("C1=’abc’", "C2 DESC");//排序DataRow[] drArr = Detailtb.Select("WZMC='"+MaterialName+"' and CZ='"+MaterialTexture+" and GG='"+MaterialSpecs+"'");//多字段过滤DataTable dtNew = dt.Clone(); for (int i = 0; i < drArr.Length; i++) { dtNew.ImportRow(drArr[i]);}3.5里的DataRow[]有个扩展方法CopyToDataTable(),还可以利用DataView来达到检索的目的。
DataTable dataSource = new DataTable(); DataView dv = dataSource.DefaultView; dv.RowFilter = "columnA = 'abc'";
//1.过滤后直接获取DataTable
DataTable newTable1 = dv.ToTable();
//2.设置新DataTable的TableName
DataTable newTable2 = dv.ToTable("NewTableName");
//3.设置新表是否过滤重复项,拥有的列的列名以及出现的顺序
//即可以设置新表的字段。但是字段名肯定是老表dataSource中拥有的。
DataTable newTable3 =
dv.ToTable(true, new string[] { "columnA,columnF,columnC" });
//4.综合了2.3两点。
DataTable newTable4 =
dv.ToTable("NewTableName", true, new string[] { "columnA,columnF,columnC" });
阅读全文
0 0
- linq 在Datatable中的使用
- Linq在三层中的使用
- List对象转换成DataTable在linq当中很使用
- C#怎样在DataTable中使用linq查询
- Linq Datatable
- datatable linq
- LINQ在开发中的地位?
- 使用Linq快速查找两个DataTable不同的结果
- DataTable 使用linq方法获得某列分组列表
- VB.net 使用LINQ对datatable对象进行查询
- DataTable在内存中的使用
- Linq To DataTable
- Linq to datatable 操作
- LINQ To DataTable
- Datatable中linq查询
- Linq To DataTable
- Linq操作DataTable
- c# Linq操作DataTable
- 你刚吃的兰州牛肉面_背后就藏着大数据
- mllib 假设检验
- dp专题
- I2S接口介绍
- [FUNC]八进制与十进制互换
- linq 在Datatable中的使用
- xvid和divx的故事
- 微信小程序资源整理
- JAVA开发常用英语单词总结六
- GOLANG sync.Mutex和sync.RWMutex
- 开发者论坛一周精粹(第九期)
- 事务一致性理解
- set 和 map
- java 读取配置文件