国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

C#中將DataTable轉(zhuǎn)化成ListT的方法解析

這篇具有很好參考價值的文章主要介紹了C#中將DataTable轉(zhuǎn)化成ListT的方法解析。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

在C#中,數(shù)據(jù)的操作是至關(guān)重要的一個方面,常常需要將數(shù)據(jù)從一個形式轉(zhuǎn)換成另一個形式以滿足我們的需求。其中,DataTable和List是常見的兩種數(shù)據(jù)形式。DataTable是一種表格形式的數(shù)據(jù)類型,它以行和列的形式存儲數(shù)據(jù)。List是一種集合類型,它可以存儲任意類型的對象,并且可以動態(tài)增加或刪除元素。在許多情況下,我們需要將DataTable轉(zhuǎn)換成List,以便于進行后續(xù)的操作和使用。本文將介紹如何在C#中將DataTable轉(zhuǎn)化成ListT的方法,其中T代表任意需要的類型。

  1. 使用反射

使用反射是將DataTable轉(zhuǎn)換成ListT的一種常見方法。反射是一種與類型相關(guān)的編程模型,它允許程序員遍歷并操作一個程序集里面的元數(shù)據(jù)。

1.1 創(chuàng)建一個泛型方法

首先,我們需要在C#中創(chuàng)建一個泛型方法,該方法可以將 DataTable 轉(zhuǎn)換成 List. 泛型方法是一種可以處理任何類型參數(shù)的方法。

public static List<T> ConvertDataTableToList<T>(DataTable table) where T : class, new()
{
    List<T> list = new List<T>();

    foreach (DataRow row in table.Rows)
    {
        T obj = new T();
        foreach (PropertyInfo info in obj.GetType().GetProperties())
        {
            if (table.Columns.Contains(info.Name))
            {
                if (row[info.Name] != DBNull.Value)
                {
                    info.SetValue(obj, row[info.Name], null);
                }
            }
        }
        list.Add(obj);
    }
    return list;
}

1.2 將DataTable轉(zhuǎn)換成ListT

然后,我們可以調(diào)用上面創(chuàng)建的方法將DataTable轉(zhuǎn)換成ListT。

DataTable table = new DataTable();
//添加列,省略

List<MyClass> list = ConvertDataTableToList<MyClass>(table);
  1. 使用LINQ查詢

除了使用反射之外,我們還可以使用LINQ查詢將DataTable轉(zhuǎn)換成ListT。LINQ查詢是一種強大的查詢工具,可以在C# 內(nèi)部把各種數(shù)據(jù)轉(zhuǎn)換成查詢結(jié)果。這里我們要使用DataTable的AsEnumerable方法和LINQ Select方法。

List<MyClass> list = table.AsEnumerable().Select(row =>
        {
            MyClass obj = new MyClass();
            obj.Field1 = row.Field<type>("ColumnName1");
            obj.Field2 = row.Field<type>("ColumnName2");
            obj.Field3 = row.Field<type>("ColumnName3");
            return obj;
        }).ToList();

其中type是你的字段類型,MyClass是你設(shè)定的目標類型,在Linq 的Select方法中,我們設(shè)置了在遍歷每一行時對MyClass中的每一個字段進行賦值。最后將結(jié)果轉(zhuǎn)換成一個List類型。

總結(jié):

以上是兩種將DataTable轉(zhuǎn)換成ListT的方法,具體各有優(yōu)劣,可以根據(jù)自己的需求選擇合適的方法。使用反射可以處理任何類型參數(shù),并且在類型不確定的情況下非常有效,但是在性能上略微低于使用LINQ。而使用LINQ則可以通過語句鏈輕松處理大量的數(shù)據(jù),代碼可讀性較好。

無論你選擇哪一種方法,都需要仔細選擇和考慮,在類型和性能方面權(quán)衡取舍。文章來源地址http://www.zghlxwxcb.cn/news/detail-570463.html

到了這里,關(guān)于C#中將DataTable轉(zhuǎn)化成ListT的方法解析的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經(jīng)查實,立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費用

相關(guān)文章

  • C# 在控制臺整齊的輸出 DataTable

    C# 在控制臺整齊的輸出 DataTable

    效果: 在?Winform 平臺,可以用 DataGridView 這樣的控件來顯示數(shù)據(jù)庫的表單數(shù)據(jù),但在 C# 控制臺項目中,如果有用到數(shù)據(jù)庫查詢,我們想看看查詢語句的效果,就比較困難了,比如,我隨意寫了一個控制臺輸出,代碼如下: 效果: 在 Navicat 16 for MySQL 軟件中的查詢結(jié)果 由于沒

    2024年02月12日
    瀏覽(98)
  • C#獲取DataTable的前N行數(shù)據(jù)然后按指定字段排序

    C#獲取DataTable的前N行數(shù)據(jù)然后按指定字段排序

    可以使用以下三種代碼: 控制臺應(yīng)用程序FilterDataTableDemo ?

    2024年02月11日
    瀏覽(23)
  • 【C#】實體類和DataTable之間相互轉(zhuǎn)換,實體反射動態(tài)遍歷列

    【C#】實體類和DataTable之間相互轉(zhuǎn)換,實體反射動態(tài)遍歷列

    在實際項目中,經(jīng)常會用到數(shù)據(jù)之間的相互轉(zhuǎn)換,序列化和反序列化就是常見場景。這里我們只簡單聊聊實體類和DataTable之間的相互轉(zhuǎn)換,可以用于不同業(yè)務(wù)場景使用。 要將C# DataTable 轉(zhuǎn)換為 Model 實體類,你可以使用反射來獲取 DataTable 的列和值,并通過實例化 Model 類來賦值

    2024年02月15日
    瀏覽(26)
  • c# 實現(xiàn)sql查詢DataTable數(shù)據(jù)集 對接SqlSugar ORM

    有時候?qū)τ谝呀?jīng)查詢到的數(shù)據(jù)集,想要進行二次篩選或者查詢,還得再查一遍數(shù)據(jù)庫 或者其他的一些邏輯處理不太方便,就想著為什么不能直接使用sql來查詢DataTable呢? 搜索全網(wǎng)沒找到可用方案,所以自己實現(xiàn)了一個。 主要實現(xiàn)思路是使用 SQLite In-Memory Database 內(nèi)存數(shù)據(jù)庫,

    2024年02月12日
    瀏覽(23)
  • C# 將Datatable的數(shù)據(jù)導(dǎo)出至指定的excel模板案例

    ? ? ? ?首先說一下需求,用戶需要將一個報表的數(shù)據(jù)導(dǎo)出到指定的excel模板,再將這個excel模板發(fā)給客戶,客戶填寫信息后,用戶再使用該界面進行導(dǎo)入反寫。主要功能為查詢、導(dǎo)出、導(dǎo)入與保存。 ? ? ? (1)查詢功能,這個就是從數(shù)據(jù)庫中查詢數(shù)據(jù)再顯示到gridControl1上,就不

    2024年02月14日
    瀏覽(27)
  • 循環(huán)可變化的集合 數(shù)組 datatable 等 || c# winfrom DataGridView 動態(tài)UI下載功能

    循環(huán)可變化的集合 數(shù)組 datatable 等 || c# winfrom DataGridView 動態(tài)UI下載功能

    ? ? ? 1,使用組件DataGridView 2,使用DataSource來控制表格展示的數(shù)據(jù)來源(注意:來源需要是DataTable類型) 3,需要用到異步線程。如果是不控制數(shù)據(jù)源的話,需要使用UI安全線程;(使用Control.Invoke或Control.BeginInvoke方法) 4,DataGridView的列如果設(shè)置圖片,盡量代碼設(shè)置 5,DataT

    2024年02月19日
    瀏覽(24)
  • C#創(chuàng)建DataTable并填充數(shù)據(jù),按鈕事件實現(xiàn)全選,并到全選的值。wpf開發(fā)

    wpf開發(fā)中,用事件創(chuàng)建一個datatable度填充到datagird里面,在datagrid里面有第一列是復(fù)選框。用一單擊事件實現(xiàn)全選,用一個按鈕事件得到所選中的值。 Window x:Class=\\\"WpfApp4.MainWindow\\\" ? ? ? ? xmlns=\\\"http://schemas.microsoft.com/winfx/2006/xaml/presentation\\\" ? ? ? ? xmlns:x=\\\"http://schemas.microsoft.com

    2024年02月08日
    瀏覽(27)
  • 擴展List<Entity>轉(zhuǎn)化為DataTable

    調(diào)用方法:DataTable dt = Service健康體檢表.GetList(param).ToDataTable(); public static partial class Extensions ??? { ??????? public static DataTable ToDataTableT(this IEnumerableT varlist) ??????? { ??????????? DataTable dtReturn = new DataTable(); ??????????? // column names ? ??????????? Propert

    2024年02月01日
    瀏覽(14)
  • c# winfrom DataGridView 動態(tài)UI下載功能(內(nèi)含GIF圖) || 循環(huán)可變化的集合 數(shù)組 datatable 等

    c# winfrom DataGridView 動態(tài)UI下載功能(內(nèi)含GIF圖) || 循環(huán)可變化的集合 數(shù)組 datatable 等

    ? 1,使用組件DataGridView 2,使用DataSource來控制表格展示的數(shù)據(jù)來源(注意:來源需要是DataTable類型) 3,需要用到異步線程。如果是不控制數(shù)據(jù)源的話,需要使用UI安全線程;(使用Control.Invoke或Control.BeginInvoke方法) 4,DataGridView的列如果設(shè)置圖片,盡量代碼設(shè)置 5,DataTable類型

    2024年02月20日
    瀏覽(22)
  • C#根據(jù)DataTable中的不同值為asp:DataGrid中的不同行或單元格設(shè)置不同的顏色

    要根據(jù) DataTable 中的不同值為 asp:DataGrid 中的不同行或單元格設(shè)置不同的顏色,可以在服務(wù)器端代碼中根據(jù)數(shù)據(jù)綁定的時機來動態(tài)設(shè)置樣式。以下是一個示例,演示如何根據(jù) DataTable 中的不同值為 asp:DataGrid 的不同行設(shè)置不同的背景顏色 asp:DataGrid ID=\\\"dataGrid\\\" runat=\\\"server\\\" AutoGener

    2024年02月09日
    瀏覽(17)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包