精华内容
下载资源
问答
  • linq嵌套、联合查询

    千次阅读 2014-08-13 00:17:33
    1. 查找每个类别中单价最低的产品: var categories = from p in db.Products... where p2.UnitPrice == g.Min(p3 => p3.UnitPrice) select p2 }; 更多: http://www.cnblogs.com/jara/p/3472215.html

    1.查找每个类别中单价最低的产品:

    var categories =
        from p in db.Products
        group p by p.CategoryID into g
        select new {
            CategoryID = g.Key,
            CheapestProducts =
                from p2 in g
                where p2.UnitPrice == g.Min(p3 => p3.UnitPrice)
                select p2
        };

    更多: http://www.cnblogs.com/jara/p/3472215.html

    展开全文
  • Linq 多层嵌套查询

    千次阅读 2017-08-29 10:38:08
    var query1 = from p in dbContent.PostService where p.post_type == "product" && (from ot1 in dbContent.OrderItemmetaService where
     var query1 = from p in dbContent.PostService
                  where p.post_type == "product" &&
                      (from ot1 in dbContent.OrderItemmetaService
                       where
                           (from ot2 in dbContent.OrderItemsService
                            where ot2.order_item_type == "line_item" &&
                                (from p1 in dbContent.PostService
                                 where p1.post_type == "shop_order" && p1.post_author == userid && p1.post_status == "wc-completed"
                                 select p1.ID).Contains(ot2.order_id)
                            select ot2.order_item_id).Contains(ot1.meta_id)
                       select ot1.meta_value).Contains(p.ID)
                  select new
                  {
                      id = p.ID,
                      name = p.post_title
                  };
    
    
     var query2 = dbContent.PostService.Where(p =>
         p.post_type == "product" &&
         (dbContent.OrderItemmetaService.Where(ot1 =>
             (dbContent.OrderItemsService.Where(ot2 =>
                 ot2.order_item_type == "line_item" && (dbContent.PostService.Where(p1 =>
                     p1.post_type == "shop_order" && p1.post_author == userid && p1.post_status == "wc-completed").Select(p1 => p1.ID).Contains(ot2.order_item_id))
                     ).Select(ot2 => ot2.order_item_id).Contains(ot1.meta_id))
                     ).Select(ot1 => ot1.meta_value).Contains(p.ID))
                     ).Select(p => new
                     {
                         id = p.ID,
                         name = p.post_title
    

    }).ToList();

    Left Join 查询

    from d in Doctors
    join c in ((from t in Commentaries where t.State != 'D' group t by new { t.DoctorID } into g 
            select new {
                    DoctorID = (Int64?)g.Key.DoctorID,
                   Total = (Int32?)g.Sum(p => p.Rating),
                     Evaluate = (System.Double?)g.Average(p => p.Rating)
                               })) 
    on new { UserID = d.UserID } equals new { UserID = (Int64)c.DoctorID }
    into a_join from p in a_join.DefaultIfEmpty()
    select new {
      d.ID,
      UserID = (Int64?)d.UserID,
      d.Name,
      Evaluate = ((int?)p.Evaluate ?? (int?)0)
    }

    Lambda表达式


    Doctors .GroupJoin (Commentaries.Where (t => ((Int32)(t.State) != 68)).GroupBy ( t => new  
                   {
                      DoctorID = t.DoctorID
                   } ).Select ( g => new  
                   {
                      DoctorID = (Int64?)(g.Key.DoctorID), 
                      Total = (Int32?)(g.Sum (p => p.Rating)), 
                      Evaluate = (Double?)(g.Average (p => p.Rating))
                   } ),  d =>  new  {UserID = d.UserID},  c => new   { UserID = (Int64)(c.DoctorID)}, (d, a_join) => new   { d = d,  a_join = a_join})
                   .SelectMany (temp0 => temp0.a_join.DefaultIfEmpty (), (temp0, p) => 
             new  
             {
                ID = temp0.d.ID, 
                UserID = (Int64?)(temp0.d.UserID), 
                Name = temp0.d.Name, 
                Evaluate = ((Int32?)(p.Evaluate) ?? (Int32?)0)
             }
       )


    
    
    展开全文
  • ,列表中嵌套列表是是怎么查询出来呢下面我们来学习一下吧 public ActionResult SelectModularAndDetail() { 从模块这张表查出数据orderby表里面的ID排序,查出里面的总条数。那怎么查出另一个表所对应的数据呢,...

    如图我们如何从模块表中联查模块明细表连带把操作类型表里面下的字段内容查出来呢?,列表中嵌套列表是是怎么查询出来呢下面我们来学习一下吧

    在这里插入图片描述
    public ActionResult SelectModularAndDetail()
    { 从模块这张表查出数据orderby表里面的ID排序,查出里面的总条数。那怎么查出另一个表所对应的数据呢,这样我们就要用到自定义的实体类ModularAndDetailVo 继承模块表 ModularDetailVo继承模块明细表 把继承模块明细表的那个Vo public List< ModularDetailVo > ModularDetails {get;set;} 就列表嵌套列表。如图
    在这里插入图片描述
    List list = (from tbModular in myModel.SYS_Modular
    orderby tbModular.ModularID
    select new ModularAndDetailVo
    {
    ModularID = tbModular.ModularID,//查出主表ID
    ModularName = tbModular.ModularName.Trim(),//名字
    ModularDetails是一个列表所以就要在写一个查询,就是所为的查询中嵌套查询。
    从tbModularDetail这张表join tbOpType查出tbModularDetail里面的OpTypeID equals(等于) tbOpType这张表里面的OpTypeID,然后where从tbModularDetail.ModularID == tbModular.ModularID 外部查询结果作为子查询条件就是上一个查询的结果然后orderby排序
    ModularDetails = (from tbModularDetail in myModel.SYS_ModularDetail
    join tbOpType in myModel.SYS_OpType on tbModularDetail.OpTypeID equals tbOpType.OpTypeID
    where tbModularDetail.ModularID == tbModular.ModularID //外部查询结果作为子查询条件// 等于tbModularDetail张表里面的外键等于外面tbModular这表里面的主键
    其实就是把俩个查询嵌套在一起,关键的一句就是where tbModularDetail.ModularID == tbModular.ModularID 里面的外键等于外面表里面的主键,相当于连查的感觉,里面的外键要和外面表里面的主键要有关联,你不能说这两张表啥关联的没有的拿去关联就只是想 连在一起,那样的话就麻烦了数据也就重复了,所以说表于表之间要有关联。嵌套查询呢理论上是可以无限嵌套查询的只要的你理的清楚就可以了。
    orderby tbModularDetail.OpTypeID
    select new ModularDetailVo
    {
    ModularDetailID = tbModularDetail.ModularDetailID,//主表ID
    ModularID = tbModularDetail.ModularID,// ModularID等于主表里面的ModularID
    OpTypeID = tbModularDetail.OpTypeID, //主表里面的外键ID
    OpType = tbOpType.OpType.Trim()//另一个标的名称
    }).ToList()
    }).ToList();
    //封装返回输出
    LayuiTableData layuiTableData = new LayuiTableData
    {
    count = list.Count(),//因为没有分页所以 count就等于查出来数据 列表的行数
    data = list
    };

            return Json(layuiTableData, JsonRequestBehavior.AllowGet);
        }
    

    页面输出结果内容如图:
    在这里插入图片描述

    展开全文
  • 说起Linq,对我来说这可能是最熟悉的C#方法了,它是MVC控制器中自带的也是最常用的数据查询方法,查询数据的写法和SQL数据库的写法类似,使用起来也不算太复杂。 第一次接触Linq方法的时候是在制作项目的登录页面...

    说起Linq,对我来说这可能是最熟悉的C#方法了,它是MVC控制器中自带的也是最常用的数据查询方法,查询数据的写法和SQL数据库的写法类似,使用起来也不算太复杂。
    第一次接触Linq方法的时候是在制作项目的登录页面部分时,要设法将用户输入的账户密码提取出来,然后拿去和数据库内的用户表进行匹配,匹配成功则当前账户登录成功。到了这时候,就要用Linq来查询用户表中的数据了。如图,查询用户表数据:
    在这里插入图片描述
    Linq有四种结尾值(点号后),需要根据自身所查询数据的实际情况来决定使用哪种结尾值。Single();查询单条数据,当在查询数据时结果为无数据或查询出多条数据时会触发异常,一般使用前加上try() catch()组合来预防异常。ToList();查询多条数据并转换成列表数据。ToArray();查询多条数据并转为数组。Count();查询一共有多少条数据。

    Linq中除了单表查询还可以多表查询数据,通过表与表之间主键&外键的联系,用join连接各个表查询出所需要的数据。如图,联表查询用户&用户类型&类型明细数据,用于判断当前登录的账号是否符合用户所选择的用户类型:
    在这里插入图片描述
    介绍完最基本的两种Linq查询写法后,轮到了本文的重头戏:二次嵌套查询。简单的说就是在一次查询中嵌套着另一次的子查询,理论上来说还可以继续嵌套,继续查询,但对于逻辑思维的要求也就更高,对我来说,二次子查询已经是较复杂的新知识。当第一张表中包含着第二张表的数据,第二张表中又连接着第三张表的数据,但第三张表却又和第一张表毫无主外键联系,这时该怎么查呢?遇到这种情况,一般的Linq查询已经无法达成要求了。此时就要改变写法,双Linq查询获取数据。

    首先我们需要创建几个实体类Vo用于存放这三张表的数据,并以列表的形式对表数据进行接收:
    在这里插入图片描述
    ModularAndDetailVo(实体类名) : SYS_Modular(数据库表对象),此处冒号的作用等于继承,相当于创建好的实体类继承了表对象内的所有数据&数据格式,而被包裹着的那句代码则是第二张表的实体对象,同样是继承了第二张表的所有内容。这样一来,就形成了列表中有列表的这种数据格式。如图,第二表实体类结构:
    在这里插入图片描述
    和一、二表的表中有表的格式不同的是,第三张表可以依靠与第二表的主外键联系,在第二表的实体对象中可以直接调用,无须转换成实体列表格式。

    二次嵌套查询的写法其实和原来的Linq查询相比没有太复杂的改变,在Select第一表的数据时将第二表作为要查询的值再进行一次Linq查询就可以了,写法如下:
    List《ModularAndDetailVo》 list = (from tbModular in myModel.SYS_Modular
    orderby tbModular.ModularID
    (排序)
    select new ModularAndDetailVo(Select一张新的ModularAndDetailVo列表,存放查询到的所需数据)
    {
    ModularID = tbModular.ModularID, [ID]
    ModularName = tbModular.ModularName.Trim(), [名称]
    ModularDetails = (from tbModularDetail in myModel.SYS_ModularDetail
    [通过主外键ID,连接第三张表]
    join tbOpType in myModel.SYS_OpType on tbModularDetail.OpTypeID equals tbOpType.OpTypeID
    [第一次查询结果要作为二次嵌套查询的条件]
    where tbModularDetail.ModularID == tbModular.ModularID
    [对第三张表ID进行排序]
    orderby tbModularDetail.OpTypeID
    select new ModularDetailVo
    {
    ModularDetailID = tbModularDetail.ModularDetailID,
    ModularID = tbModularDetail.ModularID,
    OpTypeID = tbModularDetail.OpTypeID,
    OpType = tbOpType.OpType.Trim()
    }).ToList()
    [查询结尾值]
    }).ToList(); [嵌套子查询结尾值]

    因为有两次查询嘛,理所当然也会有两次结尾值,按照以上写法就可以成功将表中表格式的数据查询出来了。总的来说其实就是变了一下写法,嵌套查询并不难写,还不如将三张表数据转换成列表形式的过程难。

    展开全文
  • C# LINQ中的Where方法的内部实现 写C#快一年多了,今天在b站搜到一个进阶的课程,打算提高一些自己的水平,然后就开始学习了。课程讲的是我平时开发过程中用的最多的LINQ内部实现和实际运行过程剖析,我会把每节课程...
  • var zz = from aa in quoteCaseModel.SingleProductList from bb in aa.CaseProductList where bb.Catagory == 14
  • Linq 之 Select 和 where 的用法

    万次阅读 2018-03-13 11:31:13
    最近开始学习linq.自己也总结一下,方便以后查阅。 Select 同 Sql 中的 select 类似,即输出我们要的东东,感觉在 linq 中更加强大。Linq 可以对集合如数组、泛型等操作,这里我们对泛型类型进行举例。建一...
  • Linq to JObject多层嵌套查询

    千次阅读 2018-01-25 18:07:07
    备注:Where和需要查找的数据平级,处于同一层,Where中的lamda可依据上一层逐层Select下去,Select返回泛型可枚举布尔类型,只需要取First即可,因为有且仅有一条数据符合条件。 其实只是工作中代码优化的一个...
  • Linq 是 C# 中一个非常好用的集合处理库,用好了能帮我们简化大量又臭又长的嵌套循环,使处理逻辑清晰可见。EF 查询主要也是依赖 Linq。但是 Linq 相对 sql 也存在一些缺点,最主要的就是动态构造查询的难度。sql 只...
  • linq嵌套查询

    2017-03-05 00:00:00
    /* * 查询并计算出各个商品的 * 总销售额 */ var res = from g in goodsArr let totalQty = /* 以下为嵌套查询 */ (from od in orders where od.GoodsNo == g.GsNo select od).Sum(odr => odr.Qty) select new { g....
  • C#datatable中 linq的使用

    2020-08-21 13:58:05
    Datatable中linq使用,主要是按查询条件分组查询排序,方便统计分析,和减少数据交互。 Dictionary<string, int> dicTotalNum = new Dictionary<string, int>(); dtDiseaseInfo.Rows.Cast<...
  • Where ( p => p . Tags . Contains ( " tech " ) && p . State == " WA " ); 有关入门, 。 Elasticsearch版本兼容性 0.9至1.x效果很好 2.x方面失败,其他查询通常有效 5.x开发中 目前不支持6.x 建物 二进制版本可...
  • Linq select 结果集中嵌套子集合查询

    千次阅读 2018-09-05 15:49:20
     where b.sheet_no==a.sheet_no && b.item_no==a.item_no  select new  {  b.item_no,  b.item_barcode,  b.qty  })  }).ToList(); 2.0 内联结,关联条件多个联合查询  var rlt = (from a...
  • LINQ 的select 和where 查询语句总结

    千次阅读 2013-10-19 12:30:05
     (6) 匿名对象嵌套查询  var list = from e in db.data select new {  company = new { companyname = e.name;  companyphone = e.phone},  manager = e.manager;  }  (7) 调用方法查询 ...
  • LINQ to SQL语句之Where/Select/Distinct

    千次阅读 2013-12-19 14:08:21
    注: 本文是本人收集,资源来至网络,作为笔记留存。 Where
  • Linq查询嵌套子查询的方法

    千次阅读 2019-06-28 08:55:10
    作者:坚定的守猴 撰写时间:2019年6月26日 ...Linq查询嵌套子查询,在数据库里面的查询顺序,一般都是“先子后父”,把子表的数据查询出来,通过子表所查询出来的数据作为父表查询数据的条件,最后再把父表...
  • var attlist = from p in ctx.View_mf_ProductAttList where (from c in ctx.mf_ProductClass where c.ClassID == int.Parse(classid) select c.ParentPath).First().Split(',')[1].Contains(p.ClassID.ToString()) ...
  • linq to sql 的嵌套查询

    千次阅读 2018-02-11 15:50:05
    sql查询中要用到in 如果在linq to sql 中如何来实现呢,根据网上找到的方法如下:var query = from a in db.crm_comment join b in db.crm_user on a.shr equals b.account where ...
  • Linq查询中嵌套子查询

    2019-04-14 09:10:43
    在MVC查询中,我们学了基本的简单的Linq单表查询和Linq多表查询,那么我们的查询方式有很多种写法,下面要讲解的是在Linq查询中嵌套子查询的写法,话不多说,先上图 这里是我们创建的实体类,实体类相信大家都知道...
  • Linq的一个嵌套查询

    2013-06-02 22:36:00
     where p.UpDepartmentId==q.DepartmentId  select new  {  Id = p.DepartmentId,  Name = p.DepartmentName,  Number = p.DepartmentNumber,  UpName = q.DepartmentName,  Type = p....
  • Where操作 适用场景:实现过滤,查询等功能。 说明:与SQL命令中的Where作用相似,都是起到范围限定也就是过滤作用的,而判断条件就是它后面所接的子句。 Where操作包括3种形式,分别为简单形式、关系条件...
  • LINQ多个操作嵌套实现

    2016-04-12 14:38:00
    获取集合,需要使用多个条件Where,排序OrderBy,查询Select一起。先来分步实现: source code: string[] stringArray = { "hgdgh", "qerty", "Haktjjy", "zcvz", &...
  • LINQ分组查询统计

    千次阅读 2018-08-25 09:38:58
    这里介绍Linq使用Group By和Count得到每个CategoryID中产品的数量,Linq使用Group By和Count得到每个CategoryID中断货产品的数量等方面。 学
  • Linq基础操作之Select,Where,OrderBy,ThenBy源码分析 二:Select 它是延迟执行。yield有得一拼,因为他们都是生成了一个枚举类。 if (source is TSource[]) { return new Enumerable.WhereSelectArrayIterator...
  • 怎么实现LINQ嵌套查询啊?这些语句怎么都实现不了?Classname = from s in _db.Classes where s.Classno == o.Classno select s.Classname , Cname = from p in _db.Courses where p.Cno == o.Cno select p.Cname, ...
  • LINQ查询与性能分析

    2019-07-04 08:56:51
    声明一下:此文在新浪博客看到,很不错没法转载,所以复制和大家分享一下...Framework3.5)给我们带来了很多令人兴奋的新特性,尤其是LINQ的引进,可以说方便了一大批开发人员和框架设计人员。过去,当我们使用O/RM...
  •  q = q.Where(p => p.name == a);   }    if  (! string .IsNullOrEmpty(b))   {   q = q.Where(p => p.age == b);   }    if  (! string .IsNullOrEmpty(c))   {   q = q.Where(p...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 2,861
精华内容 1,144
关键字:

linqwhere嵌套