首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >在C#中将DataTable转换为泛型列表

在C#中将DataTable转换为泛型列表
EN

Stack Overflow用户
提问于 2010-11-05 16:47:13
回答 7查看 101.6K关注 0票数 27

免责声明:我知道它在这么多地方被问到了。

我的查询有点不同。

编码语言: C# 3.5

我有一个名为cardsTable的DataTable从DB中拉数据,我有一个Cards类,它只有一些属性(没有构造函数)

代码语言:javascript
复制
public class Cards
{
    public Int64 CardID { get; set; }
    public string CardName { get; set; }
    public Int64 ProjectID { get; set; }
    public Double CardWidth { get; set; }
    public Double CardHeight { get; set; }
    public string Orientation { get; set; }
    public string BackgroundImage { get; set; }
    public string Background { get; set; }
}

我想将cardsTable数据插入到List类型的对象中。

我的数据中将包含空字段,因此当我转换数据时,该方法不会出错。下面的方法是最好的方法吗?

代码语言:javascript
复制
DataTable dt = GetDataFromDB();
List<Cards> target = dt.AsEnumerable().ToList().ConvertAll(x => new Cards { CardID = (Int64)x.ItemArray[0] });
EN

回答 7

Stack Overflow用户

回答已采纳

发布于 2010-11-05 17:10:16

你实际上可以把它缩短很多。您可以将Select()扩展方法视为类型转换器。然后,转换可以写成这样:

代码语言:javascript
复制
List<Cards> target = dt.AsEnumerable()
    .Select(row => new Cards
    {
        // assuming column 0's type is Nullable<long>
        CardID = row.Field<long?>(0).GetValueOrDefault(),
        CardName = String.IsNullOrEmpty(row.Field<string>(1))
            ? "not found"
            : row.Field<string>(1),
    }).ToList();
票数 34
EN

Stack Overflow用户

发布于 2013-12-07 00:48:41

只是稍微简化一下。我不使用ItemArray:

代码语言:javascript
复制
List<Person> list = tbl.AsEnumerable().Select(x => new Person
                    {
                        Id = (Int32) (x["Id"]),
                        Name = (string) (x["Name"] ?? ""),
                        LastName = (string) (x["LastName"] ?? "")
                    }).ToList();
票数 9
EN

Stack Overflow用户

发布于 2010-11-05 17:00:59

.ToList()放在错误的位置,如果某些字段可能为空,您将不得不处理这些字段,因为如果它们为空,则它们不会转换为Int64

代码语言:javascript
复制
DataTable dt = GetDataFromDB();
List<Cards> target = dt.AsEnumerable().Select(
  x => new Cards { CardID = (Int64)(x.ItemArray[0] ?? 0) }).ToList();
票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4104464

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档