1. public async Task<IEnumerable<QuestionAllInfo>> GetAllQuestionByTypeIdAsync(int id)
  2. {
  3. 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";
  4. MySqlParameter[] mySqlParameters = new MySqlParameter[] { new MySqlParameter { MySqlDbType = MySqlDbType.Int32, Value = id, ParameterName = "@p1" } };
  5. var dataSet = await SQLHelp.ExecuteQueryAsync(sql, mySqlParameters);
  6. var table = dataSet.Tables[];
  7. List<Temp> temps = new List<Temp>();
  8. if (table.Rows.Count <= )
  9. {
  10. return null;
  11. }
  12. foreach (DataRow row in table.Rows)
  13. {
  14. temps.Add(new Temp
  15. {
  16. QuestionId = (int)row["questionId"],
  17. QuestionIntention = row["questionIntention"].ToString(),
  18. QuestionName = row["questionName"].ToString(),
  19. InstanceId = IsIntDBNULL(row["instanceId"]),
  20. InstanceName = row["instancesName"].ToString()
  21. }); ;
  22. }
  23. var result = temps.GroupBy(t => new { t.QuestionId, t.QuestionIntention, t.QuestionName })
  24. .Select(question =>
  25. new QuestionAllInfo
  26. {
  27. QuestionId = question.Key.QuestionId,
  28. QuestionName = question.Key.QuestionName,
  29. QuestionIntention = question.Key.QuestionIntention,
  30. Instances = question.Select(q => new Instance
  31. {
  32. Id = q.InstanceId,
  33. Name = q.InstanceName,
  34. QuestionId = q.QuestionId
  35. })
  36. });
  37. return result;
  38. }

要转换成的实体对象

  1. class Temp
  2. {
  3. public int QuestionId { get; set; }
  4. public string QuestionIntention { get; set; }
  5. public string QuestionName { get; set; }
  6. public int? InstanceId { get; set; }
  7. public string InstanceName { get; set; }
  8. }
  9.  
  10. public class QuestionAllInfo
  11. {
  12. public int QuestionId { get; set; }
  13. public string QuestionIntention { get; set; }
  14. public string QuestionName { get; set; }
  15. public IEnumerable<Instance> Instances { get; set; }
  16. }
  17.  
  18. public class Instance
  19. {
  20. public int Id { get; set; }
  21. public string Name { get; set; }
  22. public int QuestionId { get; set; }
  23. }

使用linq对ado.net查询出来dataset集合转换成对象(查询出来的数据结构为一对多)的更多相关文章

  1. C#中对象,字符串,dataTable、DataReader、DataSet,对象集合转换成Json字符串方法。

    C#中对象,字符串,dataTable.DataReader.DataSet,对象集合转换成Json字符串方法. public class ConvertJson { #region 私有方法 /// ...

  2. C#中利用LINQ to XML与反射把任意类型的泛型集合转换成XML格式字符串

    在工作中,如果需要跟XML打交道,难免会遇到需要把一个类型集合转换成XML格式的情况.之前的方法比较笨拙,需要给不同的类型,各自写一个转换的函数.但是后来接触反射后,就知道可以利用反射去读取一个类型的 ...

  3. 使用HIBERNATE的SQL查询并将结果集自动转换成POJO

    在某些场合下,我们可能想使用HIBERNATE的框架提供的SQL查询接口,但是,由于实体没有做映射,HIBERNATE不能把结果集转换成你想要的List<POJO>,本文讨论如何在这种情况 ...

  4. c#实现list,dataset,DataTable转换成josn等各种转换方法总和

    using System;using System.Collections.Generic;using System.Text;using System.Data;using System.Refle ...

  5. DataSet 反射转换成 List<T>

    /// <summary> /// DataSet转换成指定返回类型的实体集合 /// </summary> /// <typeparam name="T&qu ...

  6. mysql 查询 int类型日期转换成datetime类型

    数据库日期类型是int类型的,该查询结果是datetime类型的 SELECT from_unixtime( `时间列名` ) FROM 表名 如果原来类型是datetime类型,查询结果要是int类 ...

  7. FMDB使用的一点心得:数据库创建、制表、查询等以及image转换成二进制nsdata保存到数据库中

    版权声明:本文为博主原创文章.未经博主同意不得转载. https://blog.csdn.net/u012951123/article/details/36871955 <span style= ...

  8. 十四、C# 支持标准查询运算符的集合接口

    支持标准查询运算符的集合接口. System.Linq.Enumeralbe类提供的一些常用的API 来执行集合处理 1.匿名类型 2.隐匿类型的局部变量 3.集合初始化器 4.集合 5.标准查询运算 ...

  9. C#中的DataSet、string、DataTable、对象转换成Json的实现代码

    C#中对象,字符串,dataTable.DataReader.DataSet,对象集合转换成Json字符串方法. public class ConvertJson { #region 私有方法 /// ...

随机推荐

  1. Python从零开始——列表List

    一:Python列表知识总览 二:列表操作符 三:Python内置函数操作列表 四:Python列表封装函数

  2. Python从零开始——字符串String

    一:Python字符串有哪些内容 二:Python字符串操作符 三:Python字符串格式化——占位符格式化 四:Python字符串格式化——format()函数 五:Python字符串常用操作函数

  3. [Tutorial]综述阅读笔记 <Visual Odometry PartII_Introduce about BA>

    目录 Visual Odometry: Part II - Matching, Robustness, and Applications ---- paper notes 特征点的选择与匹配 特征点匹 ...

  4. django框架使用及创建项目

    一.django框架使用及创建项目 (1)创建Django项目 1>在cmd命令行下输入:django-admin startproject RecourceRegist(进入相应路径下) 2& ...

  5. Windows 局域网内共享

    前言 在局域网内,其它成员无需密码就可以访问某台计算机共享的某个磁盘或某个文件夹. 本文记录几个关键点, 共享端:需要共享的计算机 用户端:从共享计算机读取文件的计算机 共享端 开启guest用户 1 ...

  6. django中嵌套的try-except

    # 因为此时为yaml模板,而且只抓取node port,所以这样处理效率快content_dict = parse_yaml(content.replace("{{", &quo ...

  7. JWT(Json Web Token):一种在Web应用中安全传递信息的规范 转载

    文本将介绍一种在Web应用中安全传递信息的方式,称为JWT. 本文内容是对JWT官网介绍说明的英文翻译而来,由于本文英文水平有限,如有错误,还请指出,谢谢. What is JSON Web Toke ...

  8. Windows解决端口占用问题

    Windows解决端口占用问题 步骤 1. win + R,输入cmd回车进入dos界面 2. 输入netstat -ano|findstr 8080 查看占用8080端口的进程 3. 输入taskk ...

  9. USACO Pearl Pairing

    洛谷 P2902 [USACO08MAR]珍珠配对Pearl Pairing https://www.luogu.org/problem/P2902 JDOJ 2577: USACO 2008 Mar ...

  10. SGD的动量(Momentum)算法

    引入动量(Momentum)方法一方面是为了解决“峡谷”和“鞍点”问题:一方面也可以用于SGD 加速,特别是针对高曲率.小幅但是方向一致的梯度. 如果把原始的 SGD 想象成一个纸团在重力作用向下滚动 ...