zoukankan      html  css  js  c++  java
  • linq中如何在join中指定多个条件

     

    public ActionResult Edit(int id)
            {
                using (DataContext db = new DataContext(ConfigurationManager.ConnectionStrings["sqlConnection"].ConnectionString))
                {
                    IQueryable<ClassInformation> result = from c in db.GetTable<TClass>()
                                                          join t in db.GetTable<TTeacher>()
                                                          on new { id = c.ID, id1 = c.ID } 
                                                          equals new { id = t.ClassID, id1 = id }
                                                          select new ClassInformation { ID = c.ID, ClassID = t.ClassID, Name = c.Name, TeacherName = t.Name, Address = t.Address, Phone = t.Phone, Email = t.Email };
                    ClassInformation k = result.Single();
                    ViewData["K"] = k;
                    return View();
    
    
                }
    
            }
    借助于匿名类型:其实和解决按多条件分组的思路是一样的。
    var a = from m in DbContext.Set<T1>()
                        join q in DbContext.Set<T2>() 
                        on  new { m.ID, Phone=m.Phone1 } equals new { q.ID, Phone=q.Phone2 }
                        where m.Phone1 !=null
                        select new { m.ID, m.Phone1 };
                a = a.OrderBy(m => m.Phone1).Skip(2).Take(2);
    SELECT 
                [Extent1].[ID] AS [ID], 
                [Extent1].[Phone1] AS [Phone1], 
    AS [C1]
                FROM  [dbo].[T1] AS [Extent1]
                INNER JOIN [dbo].[T2] AS [Extent2] ON ([Extent1].[ID] = [Extent2].[ID]) AND (([Extent1].[Phone1] = [Extent2].[Phone2]) OR (([Extent1].[Phone1] IS NULL) AND ([Extent2].[Phone2] IS NULL)))
                WHERE [Extent1].[Phone1] IS NOT NULL
    

      所以linq为什么要这么写,看到生成的sql语句 就不言而喻了,因为linq多管闲事的将NULL给总结进去了

  • 相关阅读:
    iscroll.js & flipsnap.js
    IE8’s Substr() Bug
    chrome扩展,如何阻止浏览自动关闭桌面通知.
    临时邮箱
    多个显示器, window.open的定位
    页面刷新
    PipelineDB Install and Test
    CitusDB UPSERT
    Kafka部署
    ambari-cassandra-service
  • 原文地址:https://www.cnblogs.com/robertyao/p/11136559.html
Copyright © 2011-2022 走看看