c#将linq数据集转换为datatable

author author     2022-09-05     267

关键词:

C#将LINQ数据集转换为Datatable


1.方法一:(测试可用)

//通过一个公共类将LINQ数据集转换为datatable

public DataTable LINQToDataTable<T>(IEnumerable<T> varlist)

{
     DataTable dtReturn = new DataTable();
     // column names 
     PropertyInfo[] oProps = null;

     if (varlist == nullreturn dtReturn;

     foreach (T rec in varlist)
     {
          // Use reflection to get property names, to create table, Only first time, others 
          will follow 
          if (oProps == null)
          {
               oProps = ((
Type)rec.GetType()).GetProperties();
               foreach (PropertyInfo pi in oProps)
               {
                    Type colType = pi.PropertyType;

                    if ((colType.IsGenericType) && (colType.GetGenericTypeDefinition()      
                    ==typeof(Nullable<>)))
                     {
                         colType = colType.GetGenericArguments()[0];
                     }

                    dtReturn.Columns.Add(
new DataColumn(pi.Name, colType));
               }
          }

          DataRow dr = dtReturn.NewRow();

          foreach (PropertyInfo pi in oProps)
          {
               dr[pi.Name] = pi.GetValue(rec, 
null) == null ?DBNull.Value :pi.GetValue
               (rec,null);
          }

          dtReturn.Rows.Add(dr);
     }
     return dtReturn;
}

调用:

var vrCountry = from country in objEmpDataContext.CountryMaster
                        select new {country.CountryID,country.CountryName};

DataTable dt = LINQToDataTable(vrCountry);


2.方法二:(未测试)

public DataTable ToDataTable(System.Data.Linq.DataContext ctx, object query)
{
     if (query == null)
     {
          throw new ArgumentNullException("query");
     }
     
     
IDbCommand
 cmd = ctx.GetCommand(query as IQueryable);
     SqlDataAdapter adapter = new SqlDataAdapter();
     adapter.SelectCommand = (
SqlCommand)cmd;
     DataTable dt = new DataTable("sd");

     try
     {
          cmd.Connection.Open();
          adapter.FillSchema(dt, 
SchemaType.Source); 
          adapter.Fill(dt);
     }
     finally
     {
          cmd.Connection.Close();
     }
     return dt;
}

调用:

var vrCountry = from country in objEmpDataContext.CountryMaster
                        select new {country.CountryID,country.CountryName};

DataTable dt = LINQToDataTable(objEmpDataContext,vrCountry);


原文地址:http://www.c-sharpcorner.com/uploadfile/VIMAL.LAKHERA/convert-a-linq-query-resultset-to-a-datatable/

本文出自 “世界都一样” 博客,请务必保留此出处http://970076933.blog.51cto.com/9767314/1941691

将 DataTable 转换为字典 C#

】将DataTable转换为字典C#【英文标题】:TransformaDataTableintoDictionaryC#【发布时间】:2013-11-1120:08:14【问题描述】:我想知道如何将DataTable转换为Dictionary。我做了这样的事情。usingSystem.Linq;internalDictionary<string,object>GetDict(DataTable... 查看详情

如何将datagridview转换为datatable?

...ridView是转换不了DataTable的,因为DataGridView是控件,DataTable是数据结构,但是DataGridView的数据集是有可能的,前提是DataGridView绑定数据集的时候绑定的就是DataTable类型的数据集.DataTabledt=DataGridView.DataSourseasDataTable;参考技术As529586的正解 查看详情

C# - 将 DataReader 转换为 DataTable

...15:24:30【问题描述】:我想将DataReader转换为DataTable以显示数据库中的列表(demoClients)中的所有客户。目前我有这个:usingSystem;usingSystem.Collections.Generic;usingSystem.Li 查看详情

将 Datatables POST 数组转换为 C# 模型

...3:09【问题描述】:我正在使用datatables.net结构向aspmvc发送数据,如下所示draw:1columns[0][data]:first_namecolumns[0][name]:columns[0][searchable]:truecolumns 查看详情

将数据集/数据表转换为 CSV

】将数据集/数据表转换为CSV【英文标题】:ConvertingDataSet/DataTabletoCSV【发布时间】:2011-06-2012:57:09【问题描述】:如果有任何方法可以从DataTable或DataSet生成CSV文件,请告诉我?具体而言,无需手动遍历DataTable行并进行连接。请... 查看详情

将 SQL 语句转换为 DataTable 上的 LINQ 查询

】将SQL语句转换为DataTable上的LINQ查询【英文标题】:convertingaSQLstatementtoLINQqueryonaDataTable【发布时间】:2011-02-0703:00:08【问题描述】:我正在研究LinqtoDataTable,Lambda。因为很难想把sql改成linq,Lambda是不行的。SQL代码下方是删除电... 查看详情

如何计算 LINQ 中 DataTable 的列的总和(到数据集)?

】如何计算LINQ中DataTable的列的总和(到数据集)?【英文标题】:HowtocalculatesumofaDataTable\'sColumninLINQ(toDataset)?【发布时间】:2009-02-1502:24:27【问题描述】:我刚刚开始阅读LINQ,我想开始将它整合到我的代码中。我知道如何通过... 查看详情

使用 Linq C# 为 DataTable 的每条记录创建 XML 文件

...7-02-1507:05:31【问题描述】:目前我正在从单个XML文件中的数据表中的所有记录创建XML文件,我想使用linq分别为每个记录创建XML文件。DataTabledtTest=newDataTable();dtTest.Column 查看详情

从 C# 中的存储过程返回多个记录集

...录集作为单独的DataTables返回,这样我就可以遍历所有的数据表,当我到达它的末尾时跳到下一个DataTable,而不 查看详情

将 linq 查询转换为字符串数组 - C#

】将linq查询转换为字符串数组-C#【英文标题】:Convertlinqquerytostringarray-C#【发布时间】:2010-11-2514:44:53【问题描述】:将单列linq查询转换为字符串数组的最有效方法是什么?privatestring[]WordList()DataContextdb=newDataContext();varlist=fromxin... 查看详情

LINQ 是这种情况下的最佳解决方案吗? LINQ 到数据集

】LINQ是这种情况下的最佳解决方案吗?LINQ到数据集【英文标题】:IsLINQthebestsolutioninthisscenario?LINQtoDataset【发布时间】:2011-05-2922:38:48【问题描述】:LINQ是使用.NET实现数据到对象自动映射的最佳解决方案吗?谁能给我一些其他... 查看详情

在 C# 中将数据表转换为 JSON

】在C#中将数据表转换为JSON【英文标题】:ConvertdatatabletoJSONinC#【发布时间】:2013-06-2804:38:25【问题描述】:我想从数据库中获取记录到DataTable。然后将DataTable转换为JSON对象。将JSON对象返回给我的JavaScript函数。我通过调用使用t... 查看详情

将 sql 转换为 LINQ C#

】将sql转换为LINQC#【英文标题】:ConvertingsqltoLINQC#【发布时间】:2020-04-2405:53:45【问题描述】:我正在使用LLBLGENPro运行时框架并获取表的实体。是否可以将此查询转换为LINQ表达式?SELECTs1.SETTING_NAME,s1.SETTING_VALUE,s1.ROW_LST_UPD_TS,s1.M... 查看详情

将 Oracle SQL 转换为 LLBLGEN LINQ 表达式 C#

...】:2020-04-2718:31:13【问题描述】:我有一个包含1个表的数据库:APP_ID|SETTING_NAME|SETTING_VALUE|ROW_LST_UPD_TS1|ab1|111|17:321|ab2|112|17:32--------------- 查看详情

我们可以将位置 SQL 转换为 C# LINQ 吗?

】我们可以将位置SQL转换为C#LINQ吗?【英文标题】:CanweConvertlocationSQLtoC#LINQ?【发布时间】:2021-08-2603:01:27【问题描述】:这是一个返回30英里半径内的用户列表的SQL语句SELECTid,(3959*acos(cos(radians(78.3232))*cos(radians(lat))*cos(radians(lng)-... 查看详情

把linq查询返回的var类型的数据转换为datatable

...应的所有用户,需要两表连接查询,虽然返回的只有用户数据,但是我想到若是返回的不只是用户数据,而还要加上角色信息,那么我返回什么类型呢,返回var吗,这样不行。于是我网上找找是否能返回DataTable呢,这样我不用创... 查看详情

C# 将带有 Case 语句的 SQL 查询转换为 LINQ

】C#将带有Case语句的SQL查询转换为LINQ【英文标题】:C#ConvertSQLquerywithCasestatementtoLINQ【发布时间】:2021-07-1717:34:02【问题描述】:我在其中一个表中添加了一个新列,该列的结果取决于其他2个列的结果。我进行了更新,以便可以... 查看详情

c#将datatable数据源转换成实体类

1usingSystem;2usingSystem.Collections.Generic;3usingSystem.Data;4usingSystem.Reflection;56///<summary>7///将DataTable数据源转换成实体类8///</summary>9///<typeparamname="T">实体</typeparam> 查看详情