2010-10-14 4 views
0

J'essaie de créer une requête LINQ pour retourner les genres par MovieID. Le LINQ fonctionne dans LINQPAD4. Quelqu'un peut-il m'aider avec la syntaxe appropriée? Je reçois les erreurs suivantes:Demande Genres par MovieId en utilisant LINQ à Netflix OData

Cannot implicitly convert type 'System.Linq.IQueryable' to 'System.Linq.IQueryable'. An explicit conversion exists (are you missing a cast?)

et

Cannot implicitly convert type 'System.Collections.Generic.List' to 'System.Collections.Generic.List'

Code:. (Note que j'ai enveloppé le titre dans la ligne suivante avec parenthèses, mais sont en fait entre parenthèses dans mon code

public List(Genre) GetGenresByMovieId(string movieid)
{
var genres = from t in MovieCatalog.Titles
where t.Id == "BVlLx"
select t.Genres; return genres.ToList();
}

Répondre

0

La requête droite ressemblerait

public IEnumerable<Genre> GetGenresByMovieId(string movieId) 
{ 
    return from title in ctx.Titles 
      from genre in title.Genres 
      where title.Id == "BVlLx" 
      select genre; 
} 

Dans la syntaxe d'appel de méthode, vous devez utiliser SelectMany, pas Sélectionnez, car le filtre sur les titres retourne une liste de titres (qui contiendra toujours un seul titre , mais le compilateur ne le sait pas) et donc vous voulez "concaténer" tous les genres pour chaque titre dans les résultats. Le type de retour est en fait IQueryable, mais si vous envisagez de l'énumérer, vous pouvez utiliser IEnumerable ou appeler ToList() pour forcer l'exécution directement dans la méthode (comme je l'ai écrit, la requête s'exécuterait réellement seulement une fois que vous essayez de l'énumérer).

+0

Merci. J'essaie de lier le jeu de résultats à un contrôle de données (c'est-à-dire un répéteur). Est-ce que cela fonctionnera: rpt.datasource = GetGenresByMovieId ("BVlLx"); rpt.DataBind(); Je ne comprends pas votre commentaire sur SelectMany. – obautista

+0

Oublié de mentionner. Dans la page de balisage je veux afficher seulement les noms de genre pour le titre du film, donc quelque chose comme ceci: <% # EVAL ("Name")%>. J'ai abrégé un peu le code. – obautista

+0

Désolé, je ne connais pas suffisamment ASP.NET pour répondre à cette question. La méthode renvoie simplement l'énumération des objets de genre. –

0

Votre problème est votre projection:

select new { Name = g.Name } 

Cela projette la requête dans un de type anonyme.

Vous devez projeter dans l'IQueryable vous avez déclaré (IQueryable<Genre>)

Lorsque vous travaillez avec des requêtes LINQ, il est préférable d'utiliser des variables implicitement typées (var).

En outre, vous ne savez pas pourquoi vous avez ajouté ce "de" dans votre requête, vous n'avez pas besoin de cela.

Quelque chose comme cela devrait fonctionner:

var genres = from t in MovieCatalog.Titles 
      where t.Id = "BVlLx" 
      select t.Genres; 

return genres.ToList(); 

var genres doit être dactylographié à un IQueryable<Genre>. C'est-à-dire que vous voulez retourner une collection d'objets de genre.

Si vous voulez juste le nom, faites ceci:

select t.Genres.Name 

Mais qui retourne une collection d'objets à cordes (et var genres doit être dactylographié à un IQueryable<string>).

Cependant, je n'ai aucune idée de l'API ODAT NetFlix, mais cela devrait vous mettre sur la bonne voie.

+0

Merci. Je ne reçois pas cette erreur: Impossible de convertir implicitement le type 'System.Collections.Generic.List >' en 'System.Collections.Generic.List ' – obautista

+0

@obautista - en raison de la signature de votre méthode (vous attendez un type de retour de 'List '). Que voulez-vous renvoyé?Une collection de Genres, ou une collection de noms de genre? – <span class="text-secondary"> <small> <a rel="noopener" target="_blank" href="https://stackoverflow.com/users/321946/">RPM1984</a></span> <span></span> </small> </span> </p> </div> </div> </div> <div itemprop="comment" class="post-comment"> <div class="row"> <div class="col-lg-1"><span class="text-secondary">+0</span></div> <div class="col-lg-11"> <p class="commenttext">Je me suis rendu compte qu'après avoir posté. J'ai modifié mon message pour refléter en utilisant la liste <Genre>. J'ai essayé le LINQ proposé dans LINQPAD4 et cela renvoie "La méthode 'Select' n'est pas supportée". Cela peut être la raison du type anonyme. Mon dernier commentaire reflète l'utilisation de la liste <Genre>. – <span class="text-secondary"> <small> <a rel="noopener" target="_blank" href="https://stackoverflow.com/users/331896/">obautista</a></span> <span></span> </small> </span> </p> </div> </div> </div> </div> </div> </article> </div> <div class="clearfix"> </div> <div class="relative-box"> <div class="relative">Questions connexes</div> <ul class="relative_list"> <li> 1. <a href="http://fr.voidcc.com/question/p-aqezgpgt-cb.html" target="_blank" title="Netflix OData API iPhone: Accéder à plus que le titre"> Netflix OData API iPhone: Accéder à plus que le titre </a> </li> <li> 2. <a href="http://fr.voidcc.com/question/p-seyoklsl-bz.html" target="_blank" title="Nombre de retours depuis le service oData de Netflix lorsque la méthode LINQ Count() ne fonctionne pas"> Nombre de retours depuis le service oData de Netflix lorsque la méthode LINQ Count() ne fonctionne pas </a> </li> <li> 3. <a href="http://fr.voidcc.com/question/p-xxjgtmft-bq.html" target="_blank" title="Comment interroger Netflix en utilisant YQL?"> Comment interroger Netflix en utilisant YQL? </a> </li> <li> 4. <a href="http://fr.voidcc.com/question/p-hrgvhsvk-bq.html" target="_blank" title="pager à travers les résultats de l'odata NetFlix"> pager à travers les résultats de l'odata NetFlix </a> </li> <li> 5. <a href="http://fr.voidcc.com/question/p-ptvnehgf-v.html" target="_blank" title="Utilisez LINQ pour la collection OData à double imbrication"> Utilisez LINQ pour la collection OData à double imbrication </a> </li> <li> 6. <a href="http://fr.voidcc.com/question/p-gjzzboqs-bo.html" target="_blank" title="Recherche par lettres en utilisant LINQ"> Recherche par lettres en utilisant LINQ </a> </li> <li> 7. <a href="http://fr.voidcc.com/question/p-xbeqngxr-ca.html" target="_blank" title="Demande LINQ"> Demande LINQ </a> </li> <li> 8. <a href="http://fr.voidcc.com/question/p-foultbon-cm.html" target="_blank" title="demande Rediriger en utilisant .htaccess"> demande Rediriger en utilisant .htaccess </a> </li> <li> 9. <a href="http://fr.voidcc.com/question/p-sguhdldn-ba.html" target="_blank" title="Problème de requête Dynamic Linq"> Problème de requête Dynamic Linq </a> </li> <li> 10. <a href="http://fr.voidcc.com/question/p-dvhrckzi-ba.html" target="_blank" title="Aide! Demande YUI async GET utilisant HTTPS par défaut à la méthode de demande OPTIONS"> Aide! Demande YUI async GET utilisant HTTPS par défaut à la méthode de demande OPTIONS </a> </li> <li> 11. <a href="http://fr.voidcc.com/question/p-dtrfhtsk-bs.html" target="_blank" title="oData/ADO.NET Data Services utilisant LINQ-to-SQL avec une couche de décryptage"> oData/ADO.NET Data Services utilisant LINQ-to-SQL avec une couche de décryptage </a> </li> <li> 12. <a href="http://fr.voidcc.com/question/p-xegkwnun-bs.html" target="_blank" title="Comment faire un nombre imbriqué avec OData et LINQ?"> Comment faire un nombre imbriqué avec OData et LINQ? </a> </li> <li> 13. <a href="http://fr.voidcc.com/question/p-ueheemti-bc.html" target="_blank" title="OData Authentification"> OData Authentification </a> </li> <li> 14. <a href="http://fr.voidcc.com/question/p-tknpswme-bs.html" target="_blank" title="Linq-sql classes à choisir en utilisant"> Linq-sql classes à choisir en utilisant </a> </li> <li> 15. <a href="http://fr.voidcc.com/question/p-pqjjcpok-bt.html" target="_blank" title="Collection à chaîne en utilisant LINQ"> Collection à chaîne en utilisant LINQ </a> </li> <li> 16. <a href="http://fr.voidcc.com/question/p-tqiawbsg-cn.html" target="_blank" title="Refuser la demande directe en utilisant .htaccess"> Refuser la demande directe en utilisant .htaccess </a> </li> <li> 17. <a href="http://fr.voidcc.com/question/p-ckqacigi-bu.html" target="_blank" title="WCS Dataservices et OData"> WCS Dataservices et OData </a> </li> <li> 18. <a href="http://fr.voidcc.com/question/p-kkushstf-v.html" target="_blank" title="En condition utilisant LINQ"> En condition utilisant LINQ </a> </li> <li> 19. <a href="http://fr.voidcc.com/question/p-mwioagct-bd.html" target="_blank" title="deux groupes de niveau par, commande en utilisant LINQ"> deux groupes de niveau par, commande en utilisant LINQ </a> </li> <li> 20. <a href="http://fr.voidcc.com/question/p-tsvrlqno-d.html" target="_blank" title="MS demande d'accès en utilisant plusieurs tables"> MS demande d'accès en utilisant plusieurs tables </a> </li> <li> 21. <a href="http://fr.voidcc.com/question/p-cbvblfmc-bz.html" target="_blank" title="Commander par en Linq"> Commander par en Linq </a> </li> <li> 22. <a href="http://fr.voidcc.com/question/p-djbtakzu-cc.html" target="_blank" title="flux de nouvelles utilisant .Net Dataservices/OData/Atom?"> flux de nouvelles utilisant .Net Dataservices/OData/Atom? </a> </li> <li> 23. <a href="http://fr.voidcc.com/question/p-eulfmkoj-bh.html" target="_blank" title="Existe-t-il une méthode générale pour vérifier si une propriété est définie par un fournisseur Linq, en particulier OData?"> Existe-t-il une méthode générale pour vérifier si une propriété est définie par un fournisseur Linq, en particulier OData? </a> </li> <li> 24. <a href="http://fr.voidcc.com/question/p-rykdpirg-z.html" target="_blank" title="charge tinymce à la demande en utilisant jquery"> charge tinymce à la demande en utilisant jquery </a> </li> <li> 25. <a href="http://fr.voidcc.com/question/p-kccpuvsf-bv.html" target="_blank" title="demande paramètre en utilisant jquery/javascript"> demande paramètre en utilisant jquery/javascript </a> </li> <li> 26. <a href="http://fr.voidcc.com/question/p-odarukzt-bn.html" target="_blank" title="Supprimer les doublons par champ d'une table en utilisant une autre en utilisant LINQ"> Supprimer les doublons par champ d'une table en utilisant une autre en utilisant LINQ </a> </li> <li> 27. <a href="http://fr.voidcc.com/question/p-delibxto-bd.html" target="_blank" title="Implémentation OData pour ASP.NET MVC"> Implémentation OData pour ASP.NET MVC </a> </li> <li> 28. <a href="http://fr.voidcc.com/question/p-apfjlbup-cq.html" target="_blank" title="en utilisant linq pour cela:"> en utilisant linq pour cela: </a> </li> <li> 29. <a href="http://fr.voidcc.com/question/p-hvhmqqcj-co.html" target="_blank" title="Utilisation de OData à partir de WebForms"> Utilisation de OData à partir de WebForms </a> </li> <li> 30. <a href="http://fr.voidcc.com/question/p-edzivwkz-cd.html" target="_blank" title="OData EndPoint/DataService utilisant IEnumerable <IQueryable>"> OData EndPoint/DataService utilisant IEnumerable <IQueryable> </a> </li> </ul> </div> <div> <script async src="//pagead2.googlesyndication.com/pagead/js/adsbygoogle.js"></script> <ins class="adsbygoogle" style="display:block" data-ad-format="autorelaxed" data-ad-client="ca-pub-6208739752673518" data-ad-slot="3534119089"></ins> <script> (adsbygoogle = window.adsbygoogle || []).push({}); </script> </div> <div class="padding-top-10"></div> </div> </div> <script type="text/javascript" src="http://img2.voidcc.com/voidso/script/side.js?t=1652515422260"></script> <script type="text/javascript" src="http://img2.voidcc.com/voidso/plugin/highlight/highlight.pack.js"></script> <link href="http://img2.voidcc.com/voidso/plugin/highlight/styles/docco.css" media="screen" rel="stylesheet" type="text/css" /> <script type="text/javascript"> $('pre').each(function(i, e) { hljs.highlightBlock(e, "<span class='indent'> </span>", false) }); </script> <div class="col-lg-3 col-md-4 col-sm-5"> <div id="rightTop"> <div class="row"> <script async src="//pagead2.googlesyndication.com/pagead/js/adsbygoogle.js"></script> <!-- VOIDCC问答侧边栏广告 --> <ins class="adsbygoogle" style="display:block" data-ad-client="ca-pub-6208739752673518" data-ad-slot="3862022848" data-ad-format="auto" data-full-width-responsive="true"></ins> <script> (adsbygoogle = window.adsbygoogle || []).push({}); </script> </div> <div class="row sidebar panel panel-default"> <div class="panel-heading font-bold"> Dernière question </div> <div class="m-b-sm m-t-sm clearfix"> <ul class="side_article_list"> <li class="side_article_list_item"> 1. <a href="http://fr.voidcc.com/question/p-cfpmuaot-bkv.html" target="_blank" title="SN. FlatProperties Table Design"> SN. FlatProperties Table Design </a> </li> <li class="side_article_list_item"> 2. <a href="http://fr.voidcc.com/question/p-utacvflg-bkv.html" target="_blank" title="Impossible d'accéder à View of Fragment avec ViewPager et FragmentPagerAdapter"> Impossible d'accéder à View of Fragment avec ViewPager et FragmentPagerAdapter </a> </li> <li class="side_article_list_item"> 3. <a href="http://fr.voidcc.com/question/p-vauvxjdx-bkv.html" target="_blank" title="Mon code ne fonctionnera pas dans Chrome mais fonctionne bien dans JSFiddle"> Mon code ne fonctionnera pas dans Chrome mais fonctionne bien dans JSFiddle </a> </li> <li class="side_article_list_item"> 4. <a href="http://fr.voidcc.com/question/p-zfhgmqzi-bkv.html" target="_blank" title="Comment Ajoutant à balise p jQuery"> Comment Ajoutant à balise p jQuery </a> </li> <li class="side_article_list_item"> 5. <a href="http://fr.voidcc.com/question/p-djlogkum-bkv.html" target="_blank" title="Trouver l'arborescence des composants dans Android Studio 2.3.3"> Trouver l'arborescence des composants dans Android Studio 2.3.3 </a> </li> <li class="side_article_list_item"> 6. <a href="http://fr.voidcc.com/question/p-dlesyzuu-bkx.html" target="_blank" title="Django incapable de changer fuseau horaire du format UTC"> Django incapable de changer fuseau horaire du format UTC </a> </li> <li class="side_article_list_item"> 7. <a href="http://fr.voidcc.com/question/p-nlpmjpbw-bkw.html" target="_blank" title="Utilisation de 1 seule colonne pour représenter l'histogramme dans R"> Utilisation de 1 seule colonne pour représenter l'histogramme dans R </a> </li> <li class="side_article_list_item"> 8. <a href="http://fr.voidcc.com/question/p-fjcdqmar-bkw.html" target="_blank" title="Obtention d'erreur: types incomparables: char et String"> Obtention d'erreur: types incomparables: char et String </a> </li> <li class="side_article_list_item"> 9. <a href="http://fr.voidcc.com/question/p-efytctiv-bkw.html" target="_blank" title="Clavier Android pousser tout le contenu"> Clavier Android pousser tout le contenu </a> </li> <li class="side_article_list_item"> 10. <a href="http://fr.voidcc.com/question/p-bmowxekn-bkw.html" target="_blank" title="aurelia: liaison et @observable ne fonctionnant pas"> aurelia: liaison et @observable ne fonctionnant pas </a> </li> </ul> </div> </div> </div> <p class="article-nav-bar"></p> <div class="row sidebar article-nav"> <div class="row box_white visible-sm visible-md visible-lg margin-zero"> <div class="top"> <h3 class="title"><i class="glyphicon glyphicon-th-list"></i> Questions connexes</h3> </div> <div class="article-relative-content"> <ul class="side_article_list"> <li class="side_article_list_item"> 1. <a href="http://fr.voidcc.com/question/p-aqezgpgt-cb.html" target="_blank" title="Netflix OData API iPhone: Accéder à plus que le titre"> Netflix OData API iPhone: Accéder à plus que le titre </a> </li> <li class="side_article_list_item"> 2. <a href="http://fr.voidcc.com/question/p-seyoklsl-bz.html" target="_blank" title="Nombre de retours depuis le service oData de Netflix lorsque la méthode LINQ Count() ne fonctionne pas"> Nombre de retours depuis le service oData de Netflix lorsque la méthode LINQ Count() ne fonctionne pas </a> </li> <li class="side_article_list_item"> 3. <a href="http://fr.voidcc.com/question/p-xxjgtmft-bq.html" target="_blank" title="Comment interroger Netflix en utilisant YQL?"> Comment interroger Netflix en utilisant YQL? </a> </li> <li class="side_article_list_item"> 4. <a href="http://fr.voidcc.com/question/p-hrgvhsvk-bq.html" target="_blank" title="pager à travers les résultats de l'odata NetFlix"> pager à travers les résultats de l'odata NetFlix </a> </li> <li class="side_article_list_item"> 5. <a href="http://fr.voidcc.com/question/p-ptvnehgf-v.html" target="_blank" title="Utilisez LINQ pour la collection OData à double imbrication"> Utilisez LINQ pour la collection OData à double imbrication </a> </li> <li class="side_article_list_item"> 6. <a href="http://fr.voidcc.com/question/p-gjzzboqs-bo.html" target="_blank" title="Recherche par lettres en utilisant LINQ"> Recherche par lettres en utilisant LINQ </a> </li> <li class="side_article_list_item"> 7. <a href="http://fr.voidcc.com/question/p-xbeqngxr-ca.html" target="_blank" title="Demande LINQ"> Demande LINQ </a> </li> <li class="side_article_list_item"> 8. <a href="http://fr.voidcc.com/question/p-foultbon-cm.html" target="_blank" title="demande Rediriger en utilisant .htaccess"> demande Rediriger en utilisant .htaccess </a> </li> <li class="side_article_list_item"> 9. <a href="http://fr.voidcc.com/question/p-sguhdldn-ba.html" target="_blank" title="Problème de requête Dynamic Linq"> Problème de requête Dynamic Linq </a> </li> <li class="side_article_list_item"> 10. <a href="http://fr.voidcc.com/question/p-dvhrckzi-ba.html" target="_blank" title="Aide! Demande YUI async GET utilisant HTTPS par défaut à la méthode de demande OPTIONS"> Aide! Demande YUI async GET utilisant HTTPS par défaut à la méthode de demande OPTIONS </a> </li> </ul> </div> </div> </div> </div> </div> </div> </div><!-- wrap end--> <!-- footer --> <footer id="footer"> <div class="bg-simple lt"> <div class="container"> <div class="row padder-v m-t"> <div class="col-xs-8"> <ul class="list-inline"> <li><a href="http://fr.voidcc.com/contact">Nous contacter</a></li> <li>© 2020 FR.VOIDCC.COM</li> <li><a rel="nofollow" href="https://beian.miit.gov.cn/" target="_blank">沪ICP备13005482号-13</a></li> <li><script type="text/javascript" src="https://s9.cnzz.com/z_stat.php?id=1280098168&web_id=1280098168"></script></li> <li><a href="http://cn.voidcc.com/" target="_blank" title="程序问答园区">简体中文</a></li> <li><a href="http://hk.voidcc.com/" target="_blank" title="程序問答園區">繁體中文</a></li> <li><a href="http://ru.voidcc.com/" target="_blank" title="поле вопросов и ответов">Русский</a></li> <li><a href="http://de.voidcc.com/" target="_blank" title="Frage - und - antwort - Park">Deutsch</a></li> <li><a href="http://es.voidcc.com/" target="_blank" title="Preguntas y respuestas">Español</a></li> <li><a href="http://hi.voidcc.com/" target="_blank" title="कार्यक्रम प्रश्न और उत्तर पार्क">हिन्दी</a></li> <li><a href="http://it.voidcc.com/" target="_blank" title="IL Programma di chiedere Park">Italiano</a></li> <li><a href="http://ja.voidcc.com/" target="_blank" title="プログラム問答園区">日本語</a></li> <li><a href="http://ko.voidcc.com/" target="_blank" title="프로그램 문답 단지">한국어</a></li> <li><a href="http://pl.voidcc.com/" target="_blank" title="program o park">Polski</a></li> <li><a href="http://tr.voidcc.com/" target="_blank" title="Program soru ve cevap parkı">Türkçe</a></li> <li><a href="http://vi.voidcc.com/" target="_blank" title="Đáp ứng viên">Tiếng Việt</a></li> <li><a href="http://fr.voidcc.com/" target="_blank" title="Programme interrogation Park">Française</a></li> </ul> </div> </div> </div> </div> </div> </footer> <!-- / footer --> <script async src="https://www.googletagmanager.com/gtag/js?id=UA-77509369-5"></script> <script> window.dataLayer = window.dataLayer || []; function gtag() { dataLayer.push(arguments); } gtag('js', new Date()); gtag('config', 'UA-77509369-5'); </script> <script> var _hmt = _hmt || []; (function () { var hm = document.createElement("script"); hm.src = "https://hm.baidu.com/hm.js?67d4731349f0b00136755b80364ce381"; var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(hm, s); })(); </script> </body> </html>