none
Lambda Expression Error RRS feed

  • Pergunta

  • Fala pessoal blz, primeiro post aqui.

    To com um problema já que ta me deixando maluco.

    olhem minha expressão:

            List<ProductDownloadItem> ListDownload = new List<ProductDownloadItem>();
            ListDownload = (new ProductDownloadItemBusiness()).ListarTodos("ID")
              .Where(x => x.Product.ID == int.Parse(CurrentProductID.Value))
              .Where(x => x.Product.ProductDownloadPrivileges
                .Where(y => y.Role.ID == oUserAuthentication.AuthenticatedUser.Role.ID)).ToList();

    Então eu tenho os seguinte erros na linha 5:

    Cannot implicitly convert type 'System.Collections.Generic.IEnumerable<Business.ProductDownloadPrivilege>' to 'bool'

    e

    Cannot convert lambda expression to delegate type 'System.Func<Business.ProductDownloadItem,int,bool>

    Minha estrutura está assim.

    Product contém uma lista de ProductDownloadPrivilege

    ProductDownloatItem contém Product

    ProductDownloadPrivileges contém Product e Role.

     

    Não entendi bem o erro. Alguem poderia me ajudar?

    Abraços.

    terça-feira, 4 de maio de 2010 20:53

Respostas

  • O problema está na motagem do 2º where onde esta retornando uma lista e não efetuando uma comparação. 

    Tente fazer da seguinte forma:

            ListDownload = (new ProductDownloadItemBusiness()).ListarTodos("ID")
              .Where(x => x.Product.ID == int.Parse(CurrentProductID.Value))
              .Where(x => x.Product.ProductDownloadPrivileges.Role.ID == oUserAuthentication.AuthenticatedUser.Role.ID).ToList();

    Espero que isto ajude.

    • Marcado como Resposta AlexVidotto quarta-feira, 5 de maio de 2010 14:49
    quarta-feira, 5 de maio de 2010 11:48
  • Tudo bem Calixto?
    Obrigado pelo feedback...

    Isso mesmo! Como vc disse, no segundo Where ele está retornando uma lista, porém, ele é uma lista de verdade.

    A solução encontrada foi a seguinte:

                    List<ProductDownloadItem> ListDownload = new List<ProductDownloadItem>();
                    ListDownload = (new ProductDownloadItemBusiness()).ListarTodos("ID")
                    .Where(x => x.Product.ID == int.Parse(CurrentProductID.Value))
                    .Where(x => x.Product.ProductDownloadPrivileges
                    .Where(y => y.Role.ID == oUserAuthentication.AuthenticatedUser.Role.ID).Count() > 0).ToList();

     

    Ou seja, faço minha condição se a lista for > 0.

    Obrigado, abraços.

    • Sugerido como Resposta Anderson Calixto quarta-feira, 5 de maio de 2010 14:01
    • Marcado como Resposta AlexVidotto quarta-feira, 5 de maio de 2010 14:49
    quarta-feira, 5 de maio de 2010 13:12

Todas as Respostas

  • O problema está na motagem do 2º where onde esta retornando uma lista e não efetuando uma comparação. 

    Tente fazer da seguinte forma:

            ListDownload = (new ProductDownloadItemBusiness()).ListarTodos("ID")
              .Where(x => x.Product.ID == int.Parse(CurrentProductID.Value))
              .Where(x => x.Product.ProductDownloadPrivileges.Role.ID == oUserAuthentication.AuthenticatedUser.Role.ID).ToList();

    Espero que isto ajude.

    • Marcado como Resposta AlexVidotto quarta-feira, 5 de maio de 2010 14:49
    quarta-feira, 5 de maio de 2010 11:48
  • Tudo bem Calixto?
    Obrigado pelo feedback...

    Isso mesmo! Como vc disse, no segundo Where ele está retornando uma lista, porém, ele é uma lista de verdade.

    A solução encontrada foi a seguinte:

                    List<ProductDownloadItem> ListDownload = new List<ProductDownloadItem>();
                    ListDownload = (new ProductDownloadItemBusiness()).ListarTodos("ID")
                    .Where(x => x.Product.ID == int.Parse(CurrentProductID.Value))
                    .Where(x => x.Product.ProductDownloadPrivileges
                    .Where(y => y.Role.ID == oUserAuthentication.AuthenticatedUser.Role.ID).Count() > 0).ToList();

     

    Ou seja, faço minha condição se a lista for > 0.

    Obrigado, abraços.

    • Sugerido como Resposta Anderson Calixto quarta-feira, 5 de maio de 2010 14:01
    • Marcado como Resposta AlexVidotto quarta-feira, 5 de maio de 2010 14:49
    quarta-feira, 5 de maio de 2010 13:12