使用C#将数据表转换为嵌套列表/对象

问题描述 投票:0回答:1

我有一个数据表。 enter image description here,数据模型为

public class Details
    {

        public String Id { get; set; }
        public String Type { get; set; }
        public String Name { get; set; }
        public String Terms { get; set; }
        public List<FAQ> Faqs { get; set; }
    }

    public class FAQ
    {
        public string Question { get; set; }
        public string Answer { get; set; }
    }

我想将其转换为详细信息的列表类型,例如List<Details> detatilsList;我尝试过这样,但是行在重复。如果我删除Details,则得到不同的结果,但由于匿名强制转换异常而无法将其转换为Details类型。

 var details = dt.AsEnumerable().GroupBy(x =>
                new Details //removing this detail gives distinct record as expected. But can not cast
                {
                    ID= x.Field<decimal>("ID"),
                    NAME = x.Field<string>("NAME"),
                    TYPE = x.Field<string>("TYPE"),
                    TERMS = x.Field<string>("TERMS")
                })
            .Select(x =>
                new
                {
                    x.Key.ID,
                    x.Key.NAME,
                    x.Key.TYPE,
                    x.Key.TERMS,
                    Faqs =
                    x.Select(
                        s => new Faq {Question = s.Field<string>("QUESTION"), Answer = s.Field<string>("ANSWER")})

                }).ToList();

如何修复它并将其转换为详细信息列表

我有一个数据表。以及数据模型为public类Details {public String ID {get;组; } public String Type {get;组; } public String Name {get;组; } ...

c# linq ienumerable
1个回答
0
投票

您可以按匿名对象对多个键进行分组,然后从DataTable中选择所需的列>

下面的代码首先使用IDNameTypeTerms对数据进行分组,然后在Select子句中创建新的Details对象。

© www.soinside.com 2019 - 2024. All rights reserved.