Skip to content
  • Categories
  • Recent
  • Tags
  • Popular
  • World
  • Users
  • Groups
Skins
  • Light
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • Dark
  • Cyborg
  • Darkly
  • Quartz
  • Slate
  • Solar
  • Superhero
  • Vapor

  • Default (No Skin)
  • No Skin
Collapse
Code Project
  1. Home
  2. The Lounge
  3. Why LINQ Sucks Today.

Why LINQ Sucks Today.

Scheduled Pinned Locked Moved The Lounge
csharplinq
16 Posts 6 Posters 0 Views 1 Watching
  • Oldest to Newest
  • Newest to Oldest
  • Most Votes
Reply
  • Reply as topic
Log in to reply
This topic has been deleted. Only users with topic management privileges can see it.
  • B Offline
    B Offline
    Brady Kelly
    wrote on last edited by
    #1

    Natively it only has one 'join' operator, the equijoin, or inner join. A left or right join requires a subquery, and I don't want (today) to contemplate a full outer join.

    C L P S 4 Replies Last reply
    0
    • B Brady Kelly

      Natively it only has one 'join' operator, the equijoin, or inner join. A left or right join requires a subquery, and I don't want (today) to contemplate a full outer join.

      C Offline
      C Offline
      Christian Graus
      wrote on last edited by
      #2

      I am still trying to find time to work through the LINQ book I bought a year ago. I think it looks cool, but I've not had the time to really get into it.

      Christian Graus Driven to the arms of OSX by Vista. Read my blog to find out how I've worked around bugs in Microsoft tools and frameworks.

      B 1 Reply Last reply
      0
      • C Christian Graus

        I am still trying to find time to work through the LINQ book I bought a year ago. I think it looks cool, but I've not had the time to really get into it.

        Christian Graus Driven to the arms of OSX by Vista. Read my blog to find out how I've worked around bugs in Microsoft tools and frameworks.

        B Offline
        B Offline
        Brady Kelly
        wrote on last edited by
        #3

        It is, like, totally cool, man! It really is - I bemoaned the lack of a left join, but it is too flexible to confine anything to a built in function, over a more functional operation that is based on joining to null objects. For me one of the coolest is that I can join a DB table to an Array etc. I am trying to eliminate absolutely all data access code from all my projects now.

        W 1 Reply Last reply
        0
        • B Brady Kelly

          It is, like, totally cool, man! It really is - I bemoaned the lack of a left join, but it is too flexible to confine anything to a built in function, over a more functional operation that is based on joining to null objects. For me one of the coolest is that I can join a DB table to an Array etc. I am trying to eliminate absolutely all data access code from all my projects now.

          W Offline
          W Offline
          wout de zeeuw
          wrote on last edited by
          #4

          Haven't played with linq at all yet, the one thing that scares me is that I can't quickly see what gets done by the DB and what gets bluntly loaded into the .NET world and filtered there.

          Wout

          B 1 Reply Last reply
          0
          • B Brady Kelly

            Natively it only has one 'join' operator, the equijoin, or inner join. A left or right join requires a subquery, and I don't want (today) to contemplate a full outer join.

            L Offline
            L Offline
            leppie
            wrote on last edited by
            #5

            Brady Kelly wrote:

            Natively it only has one 'join' operator, the equijoin, or inner join.

            Nope, you just need to know how to do it. Tip: DefaultIfEmpty()

            xacc.ide
            IronScheme - 1.0 RC 1 - out now!
            ((λ (x) `(,x ',x)) '(λ (x) `(,x ',x))) The Scheme Programming Language – Fourth Edition

            B 1 Reply Last reply
            0
            • W wout de zeeuw

              Haven't played with linq at all yet, the one thing that scares me is that I can't quickly see what gets done by the DB and what gets bluntly loaded into the .NET world and filtered there.

              Wout

              B Offline
              B Offline
              Brady Kelly
              wrote on last edited by
              #6

              I don't know off-hand, but there is a readily accessible tool to reveal the DB query. Things like filtering definitely get delegated to the DB.

              1 Reply Last reply
              0
              • L leppie

                Brady Kelly wrote:

                Natively it only has one 'join' operator, the equijoin, or inner join.

                Nope, you just need to know how to do it. Tip: DefaultIfEmpty()

                xacc.ide
                IronScheme - 1.0 RC 1 - out now!
                ((λ (x) `(,x ',x)) '(λ (x) `(,x ',x))) The Scheme Programming Language – Fourth Edition

                B Offline
                B Offline
                Brady Kelly
                wrote on last edited by
                #7

                leppie wrote:

                Tip: DefaultIfEmpty()

                Not available in Entity Framework. I have been doing some homework. :)

                L 1 Reply Last reply
                0
                • B Brady Kelly

                  leppie wrote:

                  Tip: DefaultIfEmpty()

                  Not available in Entity Framework. I have been doing some homework. :)

                  L Offline
                  L Offline
                  leppie
                  wrote on last edited by
                  #8

                  There, I fixed the subject. Do not curse my precious Linq2SQL :)

                  xacc.ide
                  IronScheme - 1.0 RC 1 - out now!
                  ((λ (x) `(,x ',x)) '(λ (x) `(,x ',x))) The Scheme Programming Language – Fourth Edition

                  B 1 Reply Last reply
                  0
                  • L leppie

                    There, I fixed the subject. Do not curse my precious Linq2SQL :)

                    xacc.ide
                    IronScheme - 1.0 RC 1 - out now!
                    ((λ (x) `(,x ',x)) '(λ (x) `(,x ',x))) The Scheme Programming Language – Fourth Edition

                    B Offline
                    B Offline
                    Brady Kelly
                    wrote on last edited by
                    #9

                    Still, Linq2SQL doesn't have an outer join operator. Full stop.

                    L 1 Reply Last reply
                    0
                    • B Brady Kelly

                      Still, Linq2SQL doesn't have an outer join operator. Full stop.

                      L Offline
                      L Offline
                      leppie
                      wrote on last edited by
                      #10

                      Brady Kelly wrote:

                      Still, Linq2SQL doesn't have an outer join operator. Full stop.

                      Yes, but I am sure with a little tweaking an OUTER JOIN can be emitted. To be honest, I dont even care about SQL syntax anymore, as long as LINQ spits out a minimum number of queries to get your data, then I am happy :) Sometimes to squeeze out the most, you will have to prepare some lookup queries ahead of time.

                      xacc.ide
                      IronScheme - 1.0 RC 1 - out now!
                      ((λ (x) `(,x ',x)) '(λ (x) `(,x ',x))) The Scheme Programming Language – Fourth Edition

                      B 1 Reply Last reply
                      0
                      • L leppie

                        Brady Kelly wrote:

                        Still, Linq2SQL doesn't have an outer join operator. Full stop.

                        Yes, but I am sure with a little tweaking an OUTER JOIN can be emitted. To be honest, I dont even care about SQL syntax anymore, as long as LINQ spits out a minimum number of queries to get your data, then I am happy :) Sometimes to squeeze out the most, you will have to prepare some lookup queries ahead of time.

                        xacc.ide
                        IronScheme - 1.0 RC 1 - out now!
                        ((λ (x) `(,x ',x)) '(λ (x) `(,x ',x))) The Scheme Programming Language – Fourth Edition

                        B Offline
                        B Offline
                        Brady Kelly
                        wrote on last edited by
                        #11

                        Seeing as this is a paying job, and I want to drink beer, I have opted for a SQL view to provide the left join. Pragmatism sub-queries FTW! :cool:

                        L 1 Reply Last reply
                        0
                        • B Brady Kelly

                          Seeing as this is a paying job, and I want to drink beer, I have opted for a SQL view to provide the left join. Pragmatism sub-queries FTW! :cool:

                          L Offline
                          L Offline
                          leppie
                          wrote on last edited by
                          #12

                          Brady Kelly wrote:

                          I have opted for a SQL view to provide the left join.

                          You are lucky. Our whole DB has to stay SQLCE compatible, no views, SP's or functions.

                          xacc.ide
                          IronScheme - 1.0 RC 1 - out now!
                          ((λ (x) `(,x ',x)) '(λ (x) `(,x ',x))) The Scheme Programming Language – Fourth Edition

                          B 1 Reply Last reply
                          0
                          • B Brady Kelly

                            Natively it only has one 'join' operator, the equijoin, or inner join. A left or right join requires a subquery, and I don't want (today) to contemplate a full outer join.

                            P Offline
                            P Offline
                            peterchen
                            wrote on last edited by
                            #13

                            Having to contemplate joins might be considered another negative aspect.

                            Personally, I love the idea that Raymond spends his nights posting bad regexs to mailing lists under the pseudonym of Jane Smith. He'd be like a super hero, only more nerdy and less useful. [Trevel]
                            | FoldWithUs! | sighist | µLaunch - program launcher for server core and hyper-v server

                            B 1 Reply Last reply
                            0
                            • L leppie

                              Brady Kelly wrote:

                              I have opted for a SQL view to provide the left join.

                              You are lucky. Our whole DB has to stay SQLCE compatible, no views, SP's or functions.

                              xacc.ide
                              IronScheme - 1.0 RC 1 - out now!
                              ((λ (x) `(,x ',x)) '(λ (x) `(,x ',x))) The Scheme Programming Language – Fourth Edition

                              B Offline
                              B Offline
                              Brady Kelly
                              wrote on last edited by
                              #14

                              Turns out I couldn't use a view, or only use an unnecessarily complex view, so I subquery the value lists for later aggregation.

                              1 Reply Last reply
                              0
                              • P peterchen

                                Having to contemplate joins might be considered another negative aspect.

                                Personally, I love the idea that Raymond spends his nights posting bad regexs to mailing lists under the pseudonym of Jane Smith. He'd be like a super hero, only more nerdy and less useful. [Trevel]
                                | FoldWithUs! | sighist | µLaunch - program launcher for server core and hyper-v server

                                B Offline
                                B Offline
                                Brady Kelly
                                wrote on last edited by
                                #15

                                So true.

                                1 Reply Last reply
                                0
                                • B Brady Kelly

                                  Natively it only has one 'join' operator, the equijoin, or inner join. A left or right join requires a subquery, and I don't want (today) to contemplate a full outer join.

                                  S Offline
                                  S Offline
                                  simonor
                                  wrote on last edited by
                                  #16

                                  Yeah, but you've got to love that you can make your own IQueryable to fill in the gaps.

                                  1 Reply Last reply
                                  0
                                  Reply
                                  • Reply as topic
                                  Log in to reply
                                  • Oldest to Newest
                                  • Newest to Oldest
                                  • Most Votes


                                  • Login

                                  • Don't have an account? Register

                                  • Login or register to search.
                                  • First post
                                    Last post
                                  0
                                  • Categories
                                  • Recent
                                  • Tags
                                  • Popular
                                  • World
                                  • Users
                                  • Groups