惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

D
DataBreaches.Net
V
Visual Studio Blog
WordPress大学
WordPress大学
Google DeepMind News
Google DeepMind News
K
Kaspersky official blog
博客园 - 叶小钗
月光博客
月光博客
S
Schneier on Security
T
Threat Research - Cisco Blogs
C
CERT Recently Published Vulnerability Notes
量子位
博客园 - 三生石上(FineUI控件)
宝玉的分享
宝玉的分享
P
Privacy & Cybersecurity Law Blog
Cyberwarzone
Cyberwarzone
S
Securelist
Hugging Face - Blog
Hugging Face - Blog
B
Blog
C
Cyber Attacks, Cyber Crime and Cyber Security
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
V
Vulnerabilities – Threatpost
大猫的无限游戏
大猫的无限游戏
Google DeepMind News
Google DeepMind News
V
V2EX
MongoDB | Blog
MongoDB | Blog
博客园_首页
Recorded Future
Recorded Future
酷 壳 – CoolShell
酷 壳 – CoolShell
F
Fortinet All Blogs
GbyAI
GbyAI
Microsoft Security Blog
Microsoft Security Blog
C
Cybersecurity and Infrastructure Security Agency CISA
T
Troy Hunt's Blog
罗磊的独立博客
CTFtime.org: upcoming CTF events
CTFtime.org: upcoming CTF events
T
The Blog of Author Tim Ferriss
Application and Cybersecurity Blog
Application and Cybersecurity Blog
P
Proofpoint News Feed
cs.AI updates on arXiv.org
cs.AI updates on arXiv.org
T
Tor Project blog
Microsoft Azure Blog
Microsoft Azure Blog
爱范儿
爱范儿
O
OpenAI News
有赞技术团队
有赞技术团队
Blog — PlanetScale
Blog — PlanetScale
N
News | PayPal Newsroom
G
GRAHAM CLULEY
H
Hacker News: Front Page
Hacker News - Newest:
Hacker News - Newest: "LLM"

博客园 - Shinn

开发一个12306网站要多少钱?技术分析12306合格还是不合格 完美的web 2.0站点用户中心标准,及开源用户中心nUserCenter进展报告 开源 Asp.net mvc 用户中心(nUserCenter) 产品机会评估 开源 Asp.net mvc 用户中心开发计划 [转]为什么首页最后设计 [转]从社区常识说起 [转]内容运营与冷酷态度 [转载]2008-2010中文SNS的观察和实践 如何建立有效的UGC激励机制 技术领导的疑难:如何掌控其他成员的开发 重用之前应仔细分析问题---------用错轮子有感 从面试题看高级软件工程师需要哪些技艺 测试 【翻译】WEB安全设计规范(4.1) 也为读者说几句(兼为什么要骂烂书译者) "千里之堤毁于蚁穴"------重点项目不能交付之谜(一)泥淖中的验收测试 最长代码有多长:不符[单一职责原则(SRP)]的常见设计 企业快速开发框架--基于配置文件 面试英语【转】
不足百行代码 实体数组转DataTable通用类
Shinn · 2008-11-12 · via 博客园 - Shinn

    在最近做的一个案子里,需要绑定实体数组比如Materiel[]绑定到界面(winform/webform都有),虽然可以直接绑定数组到GridView,但排序,过滤,查找等操作在数组里不是很方便。所以想借用DataTable做数据源。

   最简单的方法就是手动建一个DataTable。为每个Materiel的property建一个Column,然后指明其数据类型。建好Table之后,循环为每个Materiel创建一个新行。如果多有几个界面,虽然做起来都差不多,但代码很难重用。

   另外数据都是从WebService获取,form不允许直接访问DB,所以也不能通过ADO.net获取DataTable。

  经过一段时间的考量后决定见一个专用的Utility类EntityCollectionsConvert,接口为

DataTable ToDataTable(object[] entitys);

DataTable ToDataTable<T>(List<T> entitys)

实现的原理也比较简单

1.将判断entitys不为空;

2.取出entitys的所有property

3.在DataTable中为每个property添加一列(包括元素类型)

4.为每个entity添加一行。

5.自动生成单元测试,测试,添加到项目中

public static DataTable ToDataTable(List entitys)