C#将LINQ数据集转换为Datatable

63 篇文章 0 订阅
30 篇文章 0 订阅

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

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

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

 

     if (varlist == null) return 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);

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 可以使用Json.NET库将C#中的JSON字符串转换DataTable。 具体步骤如下: 1. 引入Json.NET库,可以通过NuGet包管理器进行安装。 2. 使用JsonConvert.DeserializeObject方法将JSON字符串转换为JArray对象。 3. 创建DataTable对象,并添加列。 4. 遍历JArray对象,将每个JSON对象转换为DataRow,并添加到DataTable中。 示例代码如下: ``` using Newtonsoft.Json; using Newtonsoft.Json.Linq; using System.Data; string json = "{'data':[{'id':1,'name':'John'},{'id':2,'name':'Mary'}]}"; JObject obj = JObject.Parse(json); JArray array = (JArray)obj["data"]; DataTable dt = new DataTable(); dt.Columns.Add("id", typeof(int)); dt.Columns.Add("name", typeof(string)); foreach (JObject item in array) { DataRow row = dt.NewRow(); row["id"] = item["id"].Value<int>(); row["name"] = item["name"].Value<string>(); dt.Rows.Add(row); } ``` 以上代码将JSON字符串中的data数组转换DataTable对象,包含id和name两列。 ### 回答2: 很抱歉,因为没有上下文信息,无法理解“c”所代表的问题或主题,无法提供符合要求的回答。建议提出问题时应尽量清晰明确,以便回答者提供有效的回答。 ### 回答3: C是计算机科学和技术的重要编程语言之一,也被广泛应用于其它领域,如数学、统计、金融、科学等。C语言因其跨平台性、高效性和灵活性而备受青睐,成为初学者和专业开发者的首选编程语言。 C语言的优点之一是跨平台性。C语言是一种跨平台的编程语言,可以在不同的操作系统和计算机架构下运行。这使得开发者能够轻松跨越多个平台,减少了开发的难度和复杂性。 C语言的另一个优点是高效性。C语言是一种快速、高效的编程语言,由于其底层语言特征,C语言可以直接操作计算机的硬件资源,如内存、处理器、输入输出设备等。这使得C语言可以编写高效性能的程序,特别适合开发那些对性能要求较高的应用程序。 C语言还具有灵活性。C语言支持指针和动态内存分配等高级特性,这些特性使得程序员可以更容易地在C语言程序中管理内存和实现复杂的数据结构。此外,C语言还可以轻松地与其他语言进行集成,如C++,Python等,以扩展其功能和灵活性。 总之,C语言是一种非常有用的编程语言,它拥有跨平台性、高效性和灵活性等一系列优点,特别适合于开发高性能、低级别的系统程序。即使在现代编程语言如Python、Java、Swift等的时代,C语言仍然被广泛应用于计算机科学和技术领域,并且仍然是开发者的首选编程语言之一。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值