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.
  • 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