2010-10-14 24 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> <script async src="https://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="1575177025"></ins> <script> (adsbygoogle = window.adsbygoogle || []).push({}); </script> </div> <div class="padding-top-10"></div> </div> </div> <script type="text/javascript" src="http://img.uwenku.com/uwenku/script/side.js?t=1644592048548"></script> <script type="text/javascript" src="http://img.uwenku.com/uwenku/plugin/highlight/highlight.pack.js"></script> <link href="http://img.uwenku.com/uwenku/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="https://pagead2.googlesyndication.com/pagead/js/adsbygoogle.js"></script> <ins class="adsbygoogle" style="display:block" data-ad-client="ca-pub-6208739752673518" data-ad-slot="5415218910" 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.uwenku.com/question/p-mcuehyuc-bc.html" target="_blank" title="Div ne pas auto-dimensionnement dans Firefox"> Div ne pas auto-dimensionnement dans Firefox </a> </li> <li class="side_article_list_item"> 2. <a href="http://fr.uwenku.com/question/p-gqvkrron-bc.html" target="_blank" title="répond_with ne fonctionne pas en ruby ​​sur rails. Pourquoi?"> répond_with ne fonctionne pas en ruby ​​sur rails. Pourquoi? </a> </li> <li class="side_article_list_item"> 3. <a href="http://fr.uwenku.com/question/p-gaasvpky-bb.html" target="_blank" title="vérifier la liste du répertoire en cours lorsque le système est à court de la table de processus?"> vérifier la liste du répertoire en cours lorsque le système est à court de la table de processus? </a> </li> <li class="side_article_list_item"> 4. <a href="http://fr.uwenku.com/question/p-zryckygf-bb.html" target="_blank" title="php sql synchrone wait"> php sql synchrone wait </a> </li> <li class="side_article_list_item"> 5. <a href="http://fr.uwenku.com/question/p-anaxqjhm-bd.html" target="_blank" title="Exception non signalée java.sql.SQLException; doit être attrapé ou déclaré être jeté?"> Exception non signalée java.sql.SQLException; doit être attrapé ou déclaré être jeté? </a> </li> <li class="side_article_list_item"> 6. <a href="http://fr.uwenku.com/question/p-whzaoqxs-be.html" target="_blank" title="entre les vues"> entre les vues </a> </li> <li class="side_article_list_item"> 7. <a href="http://fr.uwenku.com/question/p-pldjmoti-y.html" target="_blank" title="Comment afficher une autre vue après un UIImagePickerController"> Comment afficher une autre vue après un UIImagePickerController </a> </li> <li class="side_article_list_item"> 8. <a href="http://fr.uwenku.com/question/p-kcpkyhml-z.html" target="_blank" title="Utilisation de jquery Dialog avec le plugin Validation"> Utilisation de jquery Dialog avec le plugin Validation </a> </li> <li class="side_article_list_item"> 9. <a href="http://fr.uwenku.com/question/p-vzjmemda-v.html" target="_blank" title="php - éléments correspondant à un tableau"> php - éléments correspondant à un tableau </a> </li> <li class="side_article_list_item"> 10. <a href="http://fr.uwenku.com/question/p-valivksl-v.html" target="_blank" title="Comment afficher la case à cocher dans la zone de liste avec la relation parent-enfant dans asp.net?"> Comment afficher la case à cocher dans la zone de liste avec la relation parent-enfant dans asp.net? </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">Aucun problème connexe^_^</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.uwenku.com/contact">Nous contacter</a></li> <li>© 2020 FR.UWENKU.COM</li> <li><a target="_blank" href="https://beian.miit.gov.cn/">沪ICP备13005482号-4</a></li> <li><script type="text/javascript" src="https://v1.cnzz.com/z_stat.php?id=1280101193&web_id=1280101193"></script></li> <li><a href="http://www.uwenku.com/" target="_blank" title="优文库">简体中文</a></li> <li><a href="http://hk.uwenku.com/" target="_blank" title="優文庫">繁體中文</a></li> <li><a href="http://ru.uwenku.com/" target="_blank" title="поле вопросов и ответов">Русский</a></li> <li><a href="http://de.uwenku.com/" target="_blank" title="Frage - und - antwort - Park">Deutsch</a></li> <li><a href="http://es.uwenku.com/" target="_blank" title="Preguntas y respuestas">Español</a></li> <li><a href="http://hi.uwenku.com/" target="_blank" title="कार्यक्रम प्रश्न और उत्तर पार्क">हिन्दी</a></li> <li><a href="http://it.uwenku.com/" target="_blank" title="IL Programma di chiedere Park">Italiano</a></li> <li><a href="http://ja.uwenku.com/" target="_blank" title="プログラム問答園区">日本語</a></li> <li><a href="http://ko.uwenku.com/" target="_blank" title="프로그램 문답 단지">한국어</a></li> <li><a href="http://pl.uwenku.com/" target="_blank" title="program o park">Polski</a></li> <li><a href="http://tr.uwenku.com/" target="_blank" title="Program soru ve cevap parkı">Türkçe</a></li> <li><a href="http://vi.uwenku.com/" target="_blank" title="Đáp ứng viên">Tiếng Việt</a></li> <li><a href="http://fr.uwenku.com/" target="_blank" title="Programme interrogation Park">Française</a></li> </ul> </div> </div> </div> </div> </div> </footer> <!-- / footer --> <script> var _hmt = _hmt || []; (function() { var hm = document.createElement("script"); hm.src = "https://hm.baidu.com/hm.js?f78a970f17b19a79fc477a3378096f29"; var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(hm, s); })(); </script> </body> </html>