相关疑难解决方法(0)

如何将DataTable转换为通用列表?

目前,我正在使用:

DataTable dt = CreateDataTableInSomeWay();

List<DataRow> list = new List<DataRow>(); 
foreach (DataRow dr in dt.Rows)
{
    list.Add(dr);
}
Run Code Online (Sandbox Code Playgroud)

有更好的/神奇的方式吗?

c# generics datatable

174
推荐指数
13
解决办法
47万
查看次数

将DataTable转换为强类型对象的列表

我正在尝试编写一个将DataTable转换为强类型对象列表的泛型方法.

我到目前为止使用的代码是......

public List<T> ImportTable<T>(String fileName, String table)
{
    //Establish Connection to Access Database File
    var mdbData = new ConnectToAccess(@"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=F:\ACCESS\" + fileName + ".mdb;");

    var tableData = new List<T>();

    foreach (DataRow row in mdbData.GetData("SELECT * FROM " + table).Rows)
    {
        tableData.Add(ConvertRowToType<T>(row));
    }

    return tableData;
}

public T ConvertRowToType<T>(DataRow row)
{
    //??? What is the best thing to do here ???        
}
Run Code Online (Sandbox Code Playgroud)

如果任何人的建议需要更改,我不会注意这个代码.

所以假设我把这个函数称为传递类型...

public class mdbConcern
{
    public Int32 ConcernId { get; set; }
    public String Concern { get; …
Run Code Online (Sandbox Code Playgroud)

.net c# generics reflection ado.net

4
推荐指数
1
解决办法
4793
查看次数

将DataTable转换为JSON

我在这里回顾了答案:

但它们对我的特定用例没有帮助.我正在从SQL数据适配器检索DataTable,并希望将DataTable转换为List(这很容易),然后将List序列化为JSON(使用JSON.net,这很容易).

问题是我似乎必须使用List.好的,很好 - 所以我有这个代码:

DataTable result = GoMagicallyGatherSomeData();
List<DataRow> ret = new List<DataRow>();
if (result != null && result.Rows.Count > 0)
{
  foreach (DataRow curr in result.Rows)
  {
    ret.Add(curr);
  }
}
Run Code Online (Sandbox Code Playgroud)

要么

DataTable result = GoMagicallyGatherSomeData();
List<DataRow> ret = result.AsEnumerable().ToList();
Run Code Online (Sandbox Code Playgroud)

当我去序列化List时,它......不是我所期望的.

我想回来的是:

[  
   {  
      "TestId":1,
      "AccountId":1,
      "SomeString":"This is an updated test",
      "SomeTimestamp":"2016-01-01T00:00:00Z",
      "SomeDecimal":5.55
   },
   {  
      "TestId":3,
      "AccountId":1,
      "SomeString":"This is a third test",
      "SomeTimestamp":"2016-01-01T00:00:00Z",
      "SomeDecimal":5.55
   },
   { ... removed for brevity ... }
]
Run Code Online (Sandbox Code Playgroud)

而我实际得到的是: …

.net c# datatable ado.net json

0
推荐指数
1
解决办法
565
查看次数

标签 统计

c# ×3

.net ×2

ado.net ×2

datatable ×2

generics ×2

json ×1

reflection ×1