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[];
List<Temp> temps = new List<Temp>();
if (table.Rows.Count <= )
{
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; }
}

使用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. jmeter压测学习3-提取json数据里面的token参数关联

    前言 现在很多接口的登录是返回一个json数据,token值在返回的json里面,在jmeter里面也可以直接提取json里面的值. 上一个接口返回的token作为下个接口的入参. 案例场景 我现在有 ...

  2. DNS解惑之基本概念(1)

    常见问题 1.域名对应的IP地址修改完要将近一天的时间才能有效果? DNS的数据库通常是在跑在DNS服务器的内存当中的,但是我们如果临时增加一条的话其实是写到了硬盘当中,当数据库服务刷新的时候新增的新 ...

  3. 201871010101-陈来弟《面向对象程序设计(JAVA)》 第13周学习总结

    201871010101-陈来弟<面向对象程序设计(JAVA)> 第13周学习总结 实验十一 图形界面事件处理技术 实验时间 2019-11-22 第一部分:理论知识 一.事件处理 1.事 ...

  4. 201871010110-李华《面向对象程序设计(java)》第十一周学习总结

    项目 内容 这个作业属于哪个课程 https://www.cnblogs.com/nwnu-daizh/ 这个作业的要求在哪里 https://www.cnblogs.com/nwnu-daizh/p ...

  5. 在springboot中使用redis缓存,将缓存序列化为json格式的数据

    背景 在springboot中使用redis缓存结合spring缓存注解,当缓存成功后使用gui界面查看redis中的数据 原因 springboot缓存默认的序列化是jdk提供的 Serializa ...

  6. 2.第一个Vue程序

    1.IDEA中安装Vue.js插件 2.建立项目以及html文件 1.创建一个 HTML 文件 2.引入 Vue.js <script src="https://cdn.jsdeliv ...

  7. 知识点总结 VUE部分

    1.v-show和v-if的区别 v-show 操作的是元素的display属性 v-if 操作的是元素的创建和插入 v-if有更高的开销,而v-show有更高的初始渲染开销,如果需要非常频繁的切换, ...

  8. 关于RAMOS所用的操作系统

    关于RAMOS所用的操作系统 RAMOS所用的操作系统,XP就不用说了,精简版最小的600MB到1.5GB的都有.现代意义上的WIN7/8/10 RAMOS一般选用精简版操作系统,节约内存的同时,还能 ...

  9. [LeetCode] 644. Maximum Average Subarray II 子数组的最大平均值之二

    Given an array consisting of n integers, find the contiguous subarray whose length is greater than o ...

  10. [LeetCode] 234. Palindrome Linked List 回文链表

    Given a singly linked list, determine if it is a palindrome. Example 1: Input: 1->2 Output: false ...