zoukankan      html  css  js  c++  java
  • 使用linq对ado.net查询出来dataset集合转换成对象(查询出来的数据结构为一对多)

     public async Task<IEnumerable<QuestionAllInfo>> GetAllQuestionByTypeIdAsync(int id)
            {
                string sql = "SELECT q.Id as questionId,i.Id as instanceId,q.name as questionName,q.Intention as questionIntention,i.`Name` as instancesName FROM `t_questions` q LEFT JOIN t_instances i on q.Id = i.QuestionId WHERE q.QuestionTypeId = @p1";
                MySqlParameter[] mySqlParameters = new MySqlParameter[] { new MySqlParameter { MySqlDbType = MySqlDbType.Int32, Value = id, ParameterName = "@p1" } };
                var dataSet = await SQLHelp.ExecuteQueryAsync(sql, mySqlParameters);
                var table = dataSet.Tables[0];
                List<Temp> temps = new List<Temp>();
                if (table.Rows.Count <= 0)
                {
                    return null;
                }
                foreach (DataRow row in table.Rows)
                {
                    temps.Add(new Temp
                    {
                        QuestionId = (int)row["questionId"],
                        QuestionIntention = row["questionIntention"].ToString(),
                        QuestionName = row["questionName"].ToString(),
                        InstanceId = IsIntDBNULL(row["instanceId"]),
                        InstanceName = row["instancesName"].ToString()
                    }); ;
                }
                var result = temps.GroupBy(t => new { t.QuestionId, t.QuestionIntention, t.QuestionName })
                      .Select(question =>
                  new QuestionAllInfo
                  {
                      QuestionId = question.Key.QuestionId,
                      QuestionName = question.Key.QuestionName,
                      QuestionIntention = question.Key.QuestionIntention,
                      Instances = question.Select(q => new Instance
                      {
                          Id = q.InstanceId,
                          Name = q.InstanceName,
                          QuestionId = q.QuestionId
                      })
                  });
                return result;
            }

    要转换成的实体对象

    class Temp
        {
            public int QuestionId { get; set; }
            public string QuestionIntention { get; set; }
            public string QuestionName { get; set; }
            public int? InstanceId { get; set; }
            public string InstanceName { get; set; }
        }
    
    
     public class QuestionAllInfo
        {
            public int QuestionId { get; set; }
            public string QuestionIntention { get; set; }
            public string QuestionName { get; set; }
            public IEnumerable<Instance> Instances { get; set; }
        }
    
     public class Instance 
        {
            public int Id { get; set; }
            public string Name { get; set; }      
            public int QuestionId { get; set; }
        }
  • 相关阅读:
    计算机知识
    试题:论需求分析方法及应用
    试题:论信息系统开发方法及应用
    爬虫数据存储——安装docker和ElasticSearch(基于Centos7)
    go并发版爬虫
    go单任务版爬虫
    可变类型与不可变类型
    基本数据类型内置方法
    @submit.native.prevent作用
    获取当月第一天,今天的日期的方法
  • 原文地址:https://www.cnblogs.com/ROOKIEDEBUG/p/11764900.html
Copyright © 2011-2022 走看看