您现在的位置是:网站首页> 编程资料编程资料
Linq中ToList()和CopyToDataTable()用法详解_实用技巧_
2023-05-24
353人已围观
简介 Linq中ToList()和CopyToDataTable()用法详解_实用技巧_
最近在项目中使用了Linq,想把Linq的查询结果直接转换成DataTable对象,通过查找发现Linq有一个CopyToDataTable
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Configuration; using System.Data; using System.Data.SqlClient; namespace CopyToDataTableDemo { class Program { static void Main(string[] args) { string strConn = ConfigurationManager.ConnectionStrings["AppConnection"].ConnectionString; using (SqlConnection conn = new SqlConnection(strConn)) { string strSQL = "SELECT * FROM Product"; SqlCommand cmd = new SqlCommand(strSQL, conn); SqlDataAdapter adapter = new SqlDataAdapter(cmd); conn.Open(); try { DataTable dt = new DataTable(); adapter.Fill(dt); //CopyToDataTable() DataTable dtTemp = dt.AsEnumerable().Where(p => { return p["ProductId"].ToString().Trim().Equals("4"); }).CopyToDataTable(); } catch (Exception ex) { } finally { conn.Close(); } } } } } 报错信息如下:

该错误信息说明如果Linq的查询结果不包含任何DataRow对象的时候,使用该方法会报错,那么怎么将Linq的查询结果转换成DataTable使用呢?
继续查询Linq的方法,发现Linq还有一个ToList()的方法,使用该方法可以解决Linq查询结果不包含任何DataRow对象时报错的问题,代码修改如下:
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Configuration; using System.Data; using System.Data.SqlClient; namespace CopyToDataTableDemo { class Program { static void Main(string[] args) { string strConn = ConfigurationManager.ConnectionStrings["AppConnection"].ConnectionString; using (SqlConnection conn = new SqlConnection(strConn)) { string strSQL = "SELECT * FROM Product"; SqlCommand cmd = new SqlCommand(strSQL, conn); SqlDataAdapter adapter = new SqlDataAdapter(cmd); conn.Open(); try { DataTable dt = new DataTable(); adapter.Fill(dt); //CopyToDataTable() // 当LINQ的查询结果不包含任何DataRow对象的时候会报错 //DataTable dtTemp = dt.AsEnumerable().Where(p => //{ // return p["ProductId"].ToString().Trim().Equals("4"); //}).CopyToDataTable(); //ToList() List list = dt.AsEnumerable().Where(p => { return p["ProductId"].ToString().Trim().Equals("4"); }).ToList(); if (list.Count > 0) { DataTable dtTemp = dt.Clone(); // 循环遍历list转换成DataTable list.ForEach(p => { dtTemp.Rows.Add(p.ItemArray); }); } } catch (Exception ex) { } finally { conn.Close(); } } } } } 使用ToList()方法就可以解决该报错问题了。
到此这篇关于Linq中ToList()和CopyToDataTable()用法的文章就介绍到这了。希望对大家的学习有所帮助,也希望大家多多支持。
您可能感兴趣的文章:
相关内容
- 轻量级ORM框架Dapper应用之Dapper支持存储过程_实用技巧_
- .NetCore基础之读取配置文件详解_实用技巧_
- 轻量级ORM框架Dapper应用之实现Join操作_实用技巧_
- 轻量级ORM框架Dapper应用之返回多个结果集_实用技巧_
- 轻量级ORM框架Dapper应用之实现In操作_实用技巧_
- 轻量级ORM框架Dapper应用之实现CURD操作_实用技巧_
- 轻量级ORM框架Dapper应用之安装Dapper_实用技巧_
- Entity Framework使用Code First模式管理事务_实用技巧_
- Entity Framework管理并发_实用技巧_
- Entity Framework使用Code First模式管理存储过程_实用技巧_
