c# datagridview添加list内容

using System;

using System.Collections.Generic;

using System.Data;

// 定义数据模型类

public class Person

{

public int Id { get; set; }

public string Name { get; set; }

public int Age { get; set; }

public DateTime BirthDate { get; set; }

public decimal Salary { get; set; }

public bool IsActive { get; set; }

}

class Program

{

static void Main()

{

// 1. 创建测试数据 List

List<Person> peopleList = new List<Person>

{

new Person { Id = 1, Name = "张三", Age = 30, BirthDate = new DateTime(1993, 5, 15), Salary = 5000.50m, IsActive = true },

new Person { Id = 2, Name = "李四", Age = 25, BirthDate = new DateTime(1998, 8, 20), Salary = 4500.75m, IsActive = true },

new Person { Id = 3, Name = "王五", Age = 35, BirthDate = new DateTime(1988, 3, 10), Salary = 6000.00m, IsActive = false }

};

// 2. 将 List 转换为 DataTable

DataTable peopleTable = ConvertListToDataTable(peopleList);

// 3. 显示结果

DisplayDataTable(peopleTable);

}

/// <summary>

/// 使用手动映射将 List<Person> 转换为 DataTable

/// </summary>

public static DataTable ConvertListToDataTable(List<Person> peopleList)

{

// 创建 DataTable

DataTable dataTable = new DataTable("People");

// 手动创建列(定义表结构)

dataTable.Columns.Add("ID", typeof(int));

dataTable.Columns.Add("姓名", typeof(string));

dataTable.Columns.Add("年龄", typeof(int));

dataTable.Columns.Add("生日", typeof(DateTime));

dataTable.Columns.Add("薪资", typeof(decimal));

dataTable.Columns.Add("是否激活", typeof(bool));

// 如果传入的列表为空或null,返回空表

if (peopleList == null || peopleList.Count == 0)

return dataTable;

// 手动映射每一行数据

foreach (Person person in peopleList)

{

// 创建新行

DataRow row = dataTable.NewRow();

// 手动映射每个属性到对应的列

row"ID" = person.Id;

row"姓名" = person.Name;

row"年龄" = person.Age;

row"生日" = person.BirthDate;

row"薪资" = person.Salary;

row"是否激活" = person.IsActive;

// 将行添加到表中

dataTable.Rows.Add(row);

}

return dataTable;

}

/// <summary>

/// 显示 DataTable 的内容(用于验证)

/// </summary>

public static void DisplayDataTable(DataTable dataTable)

{

Console.WriteLine("DataTable 内容:");

Console.WriteLine("=========================================");

// 显示列头

foreach (DataColumn column in dataTable.Columns)

{

Console.Write($"{column.ColumnName,-10} ");

}

Console.WriteLine();

Console.WriteLine(new string('-', 70));

// 显示数据行

foreach (DataRow row in dataTable.Rows)

{

Console.WriteLine($"{row"ID",-10} {row"姓名",-10} {row"年龄",-10} {((DateTime)row"生日").ToString("yyyy-MM-dd"),-12} {row"薪资",-10} {row"是否激活",-10}");

}

}

}

相关推荐
慧都小项5 小时前
从原理图到 PCB 制造数据:设计交付的 4 个核对关口
程序人生·自动化·pcb工艺·电子设计
曹牧5 小时前
C#:未被引用的函数
c#
个 人 练 习 生10 小时前
C++ string 类模拟实现:从底层理解字符串(上)
开发语言·c++·经验分享·学习·程序人生
上位机妹子10 小时前
EF Core 两种继承映射:每层次一张表(TPH)与每类型一张表(TPT)
数据库·c#·.netcore·ef core
小羊没烦恼!12 小时前
jQuery1.5的改进细节
java·服务器·开发语言·前端·c#
下页、再停留13 小时前
【C#桌面客户端系列学习-8】批量导出数据为csv格式
开发语言·c#·visual studio
波力海苔夹心脆67514 小时前
C# 视觉检测实战:PLC 按钮触发 VisionPro 检测,OK 亮灯 / NG 灭灯(西门子 PLC,含界面显示与图片存档)
开发语言·经验分享·c#·自动化·视觉检测·.net
kim15 小时前
一个人 + AI,用 WinForms 搓了个 376KB 的 Windows 便签:便签 / 截图 / 标注 / OCR / 待办全塞进去了
c#
hez201015 小时前
一行代码在 .NET 项目里启用 Satori GC
c#·.net·.net core·gc·clr