Καλώς ορίσατε στο dotNETZone.gr - Σύνδεση | Εγγραφή | Βοήθεια
σε

 

Αρχική σελίδα Ιστολόγια Συζητήσεις Εκθέσεις Φωτογραφιών Αρχειοθήκες

Linq join με Local sequence

Îåêßíçóå áðü ôï ìÝëïò gmlogic. Τελευταία δημοσίευση από το μέλος gmlogic στις 10-07-2013, 22:34. Υπάρχουν 6 απαντήσεις.
Ταξινόμηση Δημοσιεύσεων: Προηγούμενο Επόμενο
  •  10-07-2013, 16:10 73054

    Linq join με Local sequence

    Σε ένα DataClasses.dbml

    υπάρχουν οι class από ανάλογους πίνακες από την βάση πχ Plans πίνακας

    με  property

    ...

    RecurrenceUnit 

     

    Υπάρχει και μια κλάση που δεν υπάρχει αντίστοιχος πίνακας στη βάση πχ Gen κλάση

    Όταν κάνω Join  

     Έχει 3 property

     Gen.ID

     Gen.Descr 

     Gen.Value

    Me.GenBindingSource.Clear()

            Dim Gen As New Gen

            Gen.Value = 1

            Gen.Descr = "1.ΗΜΕΡΕΣ"

            Me.GenBindingSource.Add(Gen)

            Gen = New Gen

            Gen.Value = 2

            Gen.Descr = "2.ΜΗΝΕΣ"

            Me.GenBindingSource.Add(Gen)

            Gen = New Gen

            Gen.Value = 3

            Gen.Descr = "3.ΕΤΗ"

            Me.GenBindingSource.Add(Gen)

            Me.GenBindingSource.EndEdit() 

    και ...

       Dim q1 = (From p As Gen In Me.GenBindingSource)

       Dim q2 = (From p In db.Plans Join g In q1 On p.RecurrenceUnit Equals g.Value Select p.PlanName, p.PlanDescription, p.RecurrenceUnit,g.Descr)

                Me.MasterBindingSource.DataSource = q2

     Παίρνω ex

    Local sequence cannot be used in LINQ to SQL implementations of query operators except the Contains operator. 

    Υπάρχει λύση?

    Ευχαριστώ 


    George Matzouranis
  •  10-07-2013, 16:32 73055 σε απάντηση της 73054

    Απ: Linq join με Local sequence

    Πιθανολογώ ότι το σφάλμα "Local sequence cannot be used in LINQ to SQL implementations of query operators except the Contains operator" έχει να κάνει με το που τρέχει το query. Είναι λογικό να παίρνεις exception από τη στιγμή που το query εκτελείται στον server κι εσύ κάνεις join με ένα local list στον client. Η λύση σου προτείνεται από την ίδια την περιγραφή του exception. Αντί για join χρησιμοποίησε το Contains.

    Ακόμα κι ένας άνθρωπος μπορεί ν' αλλάξει τον κόσμο. Μη θέλεις να κυβερνήσεις. Απλά δείξε το μονοπάτι κι ο κόσμος θ' ακολουθήσει!!
  •  10-07-2013, 17:19 73056 σε απάντηση της 73055

    Απ: Linq join με Local sequence

    Σου είναι εύκολο να μου πεις πω γίνεται με το contain ;

    Βασικά θέλω να παίρνω τ Gen.Descr στο query ανάλογα το p.RecurrenceUnit Equals g.Value

    Ευχαριστώ 


    George Matzouranis
  •  10-07-2013, 17:27 73057 σε απάντηση της 73056

    Απ: Linq join με Local sequence

    Ένας τρόπος που βρήκα googl-άροντας είναι αυτός. Αν δώσεις το σφάλμα στο Google, μαζί με το join keyword, θα βρεις πολλά posts γι' αυτό το ερώτημα. Η αλήθεια είναι ότι από μόνος μου δεν το παίδεψα καθόλου.

    Ακόμα κι ένας άνθρωπος μπορεί ν' αλλάξει τον κόσμο. Μη θέλεις να κυβερνήσεις. Απλά δείξε το μονοπάτι κι ο κόσμος θ' ακολουθήσει!!
  •  10-07-2013, 18:37 73058 σε απάντηση της 73057

    Απ: Linq join με Local sequence

    Ναι τα έχω κοιτάξει.

     var SE = Shop.Sections.Where( s => obj.SectionObjects

                                           .Select( so => so.SectionId )
                                           .Contains( s.SectionId ))
                           .ToList();
     Νομίζω πως έτσι μεταφράζεται
    Dim q1 = (From p As Gen In Me.GenBindingSource)
    Dim SE = db.Plans.Where(Function(s) q1.Select(Function(so) so.Value).Contains(s.RecurrenceUnit))
    Αλλά δεν καταλαβαίνω πως θα πάρω so.Descr
     Μπορεί να βοηθήσει κάποιος;

    George Matzouranis
  •  10-07-2013, 22:33 73059 σε απάντηση της 73058

    Απ: Linq join με Local sequence

    Αν το πρόβλημα είναι το "Dim q1 = (From p As Gen In Me.GenBindingSource)" να φέρει τα δεδομένα στον client για να γίνει join, ένα .ToList() είναι αρκετό να το επιτύχει αυτό...

     

    George J.

     


    George J. Capnias: Χειροπρακτικός Υπολογιστών, Ύψιστος Γκουράρχης της Κουμπουτερολογίας
    w: capnias.org, t: @gcapnias, l: gr.linkedin.com/in/gcapnias
    dotNETZone.gr News
  •  10-07-2013, 22:34 73060 σε απάντηση της 73058

    Απ: Linq join με Local sequence

    Η λύση

    http://stackoverflow.com/questions/5936301/local-sequence-cannot-be-used-in-linq-to-sql-implementations-of-query-operators

     I basically reversed the join and it worked 

    Dim q1 = (From p As Gen In Me.GenBindingSource) 

    Dim q3 = (From g In q1 Join p In db.Plans On g.Value Equals p.RecurrenceUnit Select p.PlanName, p.PlanDescription, p.RecurrenceUnit, g.Descr)


    George Matzouranis
Προβολή Τροφοδοσίας RSS με μορφή XML
Με χρήση του Community Server (Commercial Edition), από την Telligent Systems