谁说LINQ复杂查询不支持返回实名类型~复杂结果集中再使用复杂结果集

简介:

下面代码主要是从一个复杂结果集中进行一个查询,在查询中使用的结果集还是一个复杂结果集。

什么是复杂结果集?

这是我给它的定义,它是由多张表进行关联查询后,生成的新的对象结果集或者原来结果集。如下图所示

GetUserInfoDetail()方法会产生一个复杂结果集,而GetUserBaseDetail()同样会产生一个复杂结果集,后者的结果集

而前者的结果集依赖。

image

代码如下:

namespace LINQ导航字段设计及返回实名类型
{
    class Program : LinqTestBase
    {
        static void Main(string[] args)
        {

            new Program().GetUserBaseDetail().ToList().ForEach(item =>
            {
                Console.WriteLine("用户:" + item.Name + ",真实姓名" + item.UserInfos_Extend.RealName);

                if (item.UserInfos_Extend.UserAddress_Extend != null && item.UserInfos_Extend.UserAddress_Extend.Count > 0)
                {
                    Console.WriteLine("用户常用地址为:");
                    item.UserInfos_Extend.UserAddress_Extend.ForEach(i =>
                    {
                        Console.WriteLine(i.Address);
                    });
                }
            });
            Console.ReadKey();
        }

        IQueryable<UserBases> GetUserBaseDetail()
        {
            var linq = from data1 in db.UserBases
                       join data2 in GetUserInfoDetail() on data1.UserID equals data2.UserID
                       select new UserBases_Ext
                      {
                          UserID = data1.UserID,
                          Name = data1.Name,
                          UserInfos_Extend = data2,
                      };
            return linq;

        }

        IQueryable<UserInfos> GetUserInfoDetail()
        {
            var linq = from data1 in db.UserInfos
                       join data3 in db.UserAddress on data1.UserID equals data3.UserID into list
                       select new UserInfos_Ext
                       {
                           UserID = data1.UserID,
                           RealName = data1.RealName,
                           UserAddress_Extend = list.ToList(),
                       };
            return linq;

        }
    }
}

本文转自博客园张占岭(仓储大叔)的博客,原文链接:谁说LINQ复杂查询不支持返回实名类型~复杂结果集中再使用复杂结果集,如需转载请自行联系原博主。

目录
相关文章
|
3月前
|
SQL Oracle 关系型数据库
sql语句两个字段合并或者两个字段拼接显示
sql语句两个字段合并或者两个字段拼接显示
|
9月前
|
存储 缓存 数据库
提高Djang查询速度的9种方法
在Web应用程序中,数据库查询是一个关键的环节。优化数据库查询可以显著提高应用程序的性能和响应速度。Django作为一个高度可扩展的Web框架,提供了多种方式来优化数据库查询。本文将介绍一些常用的Django数据库查询优化技巧,从入门到精通,帮助您构建高效的应用程序。
111 1
|
SQL Oracle 关系型数据库
Oracle简单查询、条件查询、枚举查询、模糊查询、排序查询、函数查询等
Oracle简单查询、条件查询、枚举查询、模糊查询、排序查询、函数查询等
243 0
Oracle简单查询、条件查询、枚举查询、模糊查询、排序查询、函数查询等
|
前端开发 数据库
FineReport中使用一个搜索框查询数据库中多列值返回一列值:使用union函数
前端使用一个查询框(搜索框)查询数据库中多列值,这里使用数据库的union函数进行实现
173 0
|
SQL 存储 Java
mybatis如何直接 执行传入的任意sql语句 并按照顺序取出查询的结果集
mybatis如何直接 执行传入的任意sql语句 并按照顺序取出查询的结果集 需求: 1.直接执行前端传来的任何sql语句,parameterType="String", 2.对于任何sql语句,其返回值类型无法用resultMap在xml文件里配置或者返回具体的bean类型,因此设置resultType="java.util.Map",但是Map并不保证存入取出顺序一致, 因此设置resultType="java.util.LinkedHashMap",为保证查询的字段值有序(存入与取出顺序一致)所以采用LinkedHashMap。
2231 0
|
SQL
**SQL某一表中重复某一字段重复记录查询与处理
sql某一表中重复某一字段重复记录查询与处理   1.查询出重复记录  select 重复记录字段 form  数据表 group by houseno having count(重复记录字段)>1 2.
927 0