Visualizzazione dei risultati da 1 a 5 su 5
  1. #1
    Utente di HTML.it
    Registrato dal
    Sep 2002
    Messaggi
    669

    [C# .net] Eseguire query linq su collectionviewsource.view

    ciao a tutti!

    ho cominciato da poco a convertire il mio codice VB in C#. ho pero' un problema a effettuare questo comando:

    If



    (From t In checklist.View Where t.ValoreCerca = strValue Order By t.ValoreID select t).Count < 1 Then

    se in C# scrivo:

    if





    ((from t in checklist.View where t.ValoreCerca == strValue orderby t.ValoreID select t).Count() < 1)

    ricevo un errore:

    Errore 1 Impossibile trovare un'implementazione del modello di query per il tipo di origine 'System.ComponentModel.ICollectionView'. 'Where' non trovato. Si consiglia di specificare in modo esplicito il tipo della variabile di intervallo 't'.


    Qualcuno sa dirmi dove sbaglio?


    grazie a tutti

  2. #2
    Utente di HTML.it L'avatar di rsdpzed
    Registrato dal
    Aug 2001
    Messaggi
    764
    Ascolta io questa sintassi non la uso mai ma se non ricordo male VB rispetto a C# ha delle ulteriori migliorie alla sintassi SQL Style. Oppure potrebbe essere un problema di parentesi le espressioni del where e orderby le metterei tra parentesi.
    Taglia la testa al toro e riscrivila nella forma normale (con gli extension method) e vedi se risolvi.

    Un altra cosa, per come la scrivi tu quella istruzione in caso di insieme vuoto dovrebbe ritornare una eccezione a nullreference, io la scriverei cosi:

    codice:
    if (checklist.View.Where(v => v.ValoreCerca.Equals(strValue )).OrderBy(o => o.ValoreID) != null)

  3. #3
    Moderatore di Programmazione L'avatar di alka
    Registrato dal
    Oct 2001
    residenza
    Reggio Emilia
    Messaggi
    24,472

    Re: [C# .net] Eseguire query linq su collectionviewsource.view

    Originariamente inviato da kolore
    Errore 1 Impossibile trovare un'implementazione del modello di query per il tipo di origine 'System.ComponentModel.ICollectionView'. 'Where' non trovato. Si consiglia di specificare in modo esplicito il tipo della variabile di intervallo 't'.
    Sei sicuro di aver incluso tutti i namespace che hanno a che fare con LINQ?
    MARCO BREVEGLIERI
    Software and Web Developer, Teacher and Consultant

    Home | Blog | Delphi Podcast | Twitch | Altro...

  4. #4
    Utente di HTML.it
    Registrato dal
    Sep 2002
    Messaggi
    669
    grazie a tutti per le risposte.
    il problema in realtà sembra essere la mancata dichiarazione esplicita del tipo t.

    in realta per risolverla dovrei riscriverla cosi:

    (From TipoOrigine t In checklist.View Where t.ValoreCerca = strValue Order By t.ValoreID select t).Count

    se per dire l'origine fosse una tabella dell'entita' (EF) dovrei scrivere:

    (From NomeTabella t In checklist.View Where t.ValoreCerca = strValue Order By t.ValoreID select t).Count

    il problema è che io a priori non conosco la reale origine della collectionviewsource

  5. #5
    Moderatore di Programmazione L'avatar di alka
    Registrato dal
    Oct 2001
    residenza
    Reggio Emilia
    Messaggi
    24,472
    Originariamente inviato da kolore
    il problema è che io a priori non conosco la reale origine della collectionviewsource
    In tal caso, non puoi scrivere alcun codice che utilizzi direttamente delle proprietà di un oggetto quando alla CollectionViewSource potresti assegnare istanze che appartengono a un altro tipo.

    Esegui un cast, e quindi indichi a C# quale tipo ti aspetti di ricevere (con generazione di un errore se questo non corrisponde).
    MARCO BREVEGLIERI
    Software and Web Developer, Teacher and Consultant

    Home | Blog | Delphi Podcast | Twitch | Altro...

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.