zoukankan      html  css  js  c++  java
  • EF中左连接

    项目中遇到一个问题,就是两张表需要做链接,但关键字不是主键,另一个表的数据不是唯一的,所以需要按照时间排序取到最后时间的那一条数据。

    var InfoList = db.PrintInfo.OrderByDescending(c => c.Datetime).GroupBy(c => c.ph).Select(groups => new { FirstOrDefault = groups.FirstOrDefault()}).ToList();

    然后在进行左连接

     var user = (from u in ListA
                            join uw in InfoList on u.Number.Trim() + u.TicketNO.Trim() equals uw.FirstOrDefault.ph.Trim() into uwt                        
                            from uwti in uwt.DefaultIfEmpty() // 变成left join
                            select new{
                               ID=u.id,
                                Status = uwti != null ? (!string.IsNullOrEmpty(uwti.FirstOrDefault.Status) ? uwti.FirstOrDefault.Status : "") : "",
                            } .ToList();               

    这样选出来就是两张表的链接了。

    因为使用原来的ED方法,从另一个表里

     var List = PrintInfo.Where(n => n.ph.Trim() == reList[i].Number + reList[i].TicketNO).OrderByDescending(n => n.Datetime).Take(1).ToList();

    这样一个一个选择比较慢,所以进行了优化。特此记录

  • 相关阅读:
    语言基础
    进制转换
    添加
    查找
    继承
    封装
    面向基础 c#小复习
    主外键
    三个表的关系
    插入信息,模糊查询,聚合函数,时间函数,排序,字符串函数,数学函数,求个数,球最大
  • 原文地址:https://www.cnblogs.com/Lvkang/p/11683707.html
Copyright © 2011-2022 走看看