LINQ 问题,看看有没有大神可以看看

IT墨香 2020-10-16 03:39:02
from a in datas
join b in cab on a.ServiceOrderId equals b.ServiceOrderId
join c in sod on a.ServiceOrderId equals c.Id
join d in sum on a.CreateUserId equals d.Id
select new { a,b, c, d};


其中需要查出a的数据,但是带出b,c,d三个表中一些数据,但是a与b,a与c是一对多关系,所以会查出很多重复的,求解不让他重复
...全文
17753 点赞 收藏 5
写回复
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
正怒月神 2020-10-22
引用 4 楼 墨香阁 的回复:
[quote=引用 3 楼 正怒月神 的回复:]既然 其中需要查出a的数据,但是带出b,c,d三个表中一些数据,但是a与b,a与c是一对多关系 那么如果带出了2个不同的b字段,选哪个? 你需要给出规则
假设a表与b表存在一对多关系,但b表是中间表,最终需要查询c表数据,b表数据与c表为一对一关系 其中c表中存在字段typeid,需要按照typeid排序,取最大值 请问大神有解决方案吗
from a in datas
                                 join b in  cab  on a.ServiceOrderId equals b.ServiceOrderId
                                 join c in sod on b.idequals c.cabid 
                                 select new { a,b, c};
[/quote] 那其实比较简单,就是a,b,c三标互联, 然后获取各组中,c表typeid最大的那个。 我给你个例子,你照着改改
static void Main(string[] args)
        {
            var q = from a in myList            //a表
                    join b in myList1 on a.ID equals b.ID       //b表
                    group b by b.ID into g      //根据id分组
                    select new      //查询出需要的字段
                    {
                        Id = g.Key,     //分组字段
                        Age = g.Max(x => x.Age)     //分组中,最大的Age
                    };


            Console.ReadLine();
        }
回复
IT墨香 2020-10-21
引用 3 楼 正怒月神 的回复:
既然 其中需要查出a的数据,但是带出b,c,d三个表中一些数据,但是a与b,a与c是一对多关系 那么如果带出了2个不同的b字段,选哪个? 你需要给出规则
假设a表与b表存在一对多关系,但b表是中间表,最终需要查询c表数据,b表数据与c表为一对一关系 其中c表中存在字段typeid,需要按照typeid排序,取最大值 请问大神有解决方案吗
from a in datas
                                 join b in  cab  on a.ServiceOrderId equals b.ServiceOrderId
                                 join c in sod on b.idequals c.cabid 
                                 select new { a,b, c};
回复
正怒月神 2020-10-21
既然 其中需要查出a的数据,但是带出b,c,d三个表中一些数据,但是a与b,a与c是一对多关系 那么如果带出了2个不同的b字段,选哪个? 你需要给出规则
回复
类似这样,根据b表根据ServiceOrderId分组后区你需要的字段
from a in datas
join b in  cab.GroupBy(g=>g.ServiceOrderId).Select(s=>new{ServiceOrderId=s.Key,abc = s.Max(m=>m.你需要的字段)})  
on a.ServiceOrderId equals b.ServiceOrderId
回复
Logerlink 2020-10-21
select new { name = a.name, bid = b.id, cid = c.id, ... };
回复
相关推荐
基于java的企业人事管理系统设计--软件工程课程设计(含源码与论文设计).rar 1 引言 4 1.1 课程设计目标 4 1.2 编程工具(编程环境)介绍 4 1.3 实施时间及主要实施步骤 4 2 需求分析 5 3 系统总体设计 6 4 数据库设计 6 5 主要功能模块的设计与实现 10 5.1 功能模块1详细设计(综合查询员工信息)..........................................................10 5.1.1 详细设计.......................................................................................................10 5.1.2 算法流程........................................................................................................15 5.1.3 界面设计及测试结果.....................................................................................15 6 调试分析 15 7 用户手册 16 8 测试结果 17 8.1 员工信息的添加...................................................................................................17 8.2 员工信息的修改...................................................................................................17 8.3 员工信息的删除...................................................................................................18 8.4 员工信息的综合查询...........................................................................................18 8.5 员工信息按性别统计的结果................................................................................19 8.6 员工信息按状态统计的结果...............................................................................19 8.7 员工信息按职称统计的结果................................................................................20 9 结论 20 10 参考文献 20
发帖
LINQ
创建于2007-12-13

8495

社区成员

.NET技术 LINQ
申请成为版主
帖子事件
创建了帖子
2020-10-16 03:39
社区公告
暂无公告