{"id":184,"date":"2023-12-13T18:04:29","date_gmt":"2023-12-13T21:04:29","guid":{"rendered":"https:\/\/dotnetdicas.com.br\/?p=184"},"modified":"2023-12-13T18:15:14","modified_gmt":"2023-12-13T21:15:14","slug":"metodo-selectmany-em-c","status":"publish","type":"post","link":"https:\/\/dotnetdicas.com.br\/?p=184","title":{"rendered":"M\u00e9todo SelectMany em C#"},"content":{"rendered":"<p><span style=\"font-family: verdana, geneva, sans-serif;\">Ol\u00e1, Devs! O m\u00e9todo <strong>SelectMany<\/strong> em C# \u00e9 uma ferramenta poderosa, por\u00e9m frequentemente subutilizada. Este artigo vai mergulhar nas capacidades do <strong>SelectMany<\/strong>, explicando como ele pode simplificar seu c\u00f3digo ao trabalhar com cole\u00e7\u00f5es de cole\u00e7\u00f5es. Com <strong>SelectMany<\/strong>, voc\u00ea pode transformar estruturas de dados complexas em sequ\u00eancias simples e gerenci\u00e1veis, melhorando a legibilidade e efici\u00eancia do seu c\u00f3digo.<\/span><\/p>\n<h3><span style=\"font-family: verdana, geneva, sans-serif;\">1. O que \u00e9 SelectMany?<\/span><\/h3>\n<p><span style=\"font-family: verdana, geneva, sans-serif;\"><strong>SelectMany<\/strong> \u00e9, na verdade, um m\u00e9todo de extens\u00e3o do LINQ <em>(Language-Integrated Query)<\/em> em C#. Sua principal fun\u00e7\u00e3o, que \u00e9 bastante not\u00e1vel, \u00e9 <em><strong>&#8220;achatar&#8221;<\/strong><\/em> cole\u00e7\u00f5es de cole\u00e7\u00f5es, transformando-as em uma \u00fanica sequ\u00eancia. Imagine, por exemplo, que voc\u00ea est\u00e1 trabalhando com uma lista de listas ou um array de arrays. Normalmente, neste cen\u00e1rio, voc\u00ea teria que usar loops aninhados para acessar todos os elementos. No entanto, <strong>SelectMany<\/strong> elimina essa necessidade, facilitando enormemente o processo ao permitir que voc\u00ea trate todos os elementos internos como parte de uma \u00fanica cole\u00e7\u00e3o iter\u00e1vel.<\/span><\/p>\n<h3><span style=\"font-family: verdana, geneva, sans-serif;\">2. Como funciona o SelectMany?<\/span><\/h3>\n<p><span style=\"font-family: verdana, geneva, sans-serif;\">O <strong>SelectMany<\/strong> opera em qualquer tipo que implemente <em><strong>IEnumerable&lt;T&gt;<\/strong><\/em>,\u00a0como listas, arrays ou qualquer outra cole\u00e7\u00e3o. Ele projeta cada elemento da cole\u00e7\u00e3o original para uma nova forma (normalmente outra cole\u00e7\u00e3o) e ent\u00e3o concatena todas essas cole\u00e7\u00f5es intermedi\u00e1rias em uma \u00fanica sequ\u00eancia.<\/span><\/p>\n<h3><span style=\"font-family: verdana, geneva, sans-serif;\">3. Vantagens do uso de SelectMany<\/span><\/h3>\n<p><span style=\"font-family: verdana, geneva, sans-serif;\">A utiliza\u00e7\u00e3o do <strong>SelectMany<\/strong> traz clareza e concis\u00e3o ao seu c\u00f3digo. Ao inv\u00e9s de m\u00faltiplos loops aninhados, voc\u00ea tem uma \u00fanica express\u00e3o LINQ elegante. Isso torna seu c\u00f3digo mais leg\u00edvel e f\u00e1cil de manter. Al\u00e9m disso, <strong>SelectMany<\/strong> \u00e9 extremamente \u00fatil em cen\u00e1rios onde voc\u00ea precisa extrair ou transformar dados de cole\u00e7\u00f5es complexas ou aninhadas.<\/span><\/p>\n<h3><span style=\"font-family: verdana, geneva, sans-serif;\">4. Vis\u00e3o geral com SelectMany<\/span><\/h3>\n<p><span style=\"font-family: verdana, geneva, sans-serif;\">Considere uma lista de listas:<\/span><\/p>\n<p><img decoding=\"async\" loading=\"lazy\" class=\"aligncenter wp-image-185\" src=\"http:\/\/dotnetdicas.com.br\/wp-content\/uploads\/2023\/12\/lista-de-listas1024x260-300x76.png\" alt=\"SelectMany - lista de listas\" width=\"734\" height=\"186\" srcset=\"https:\/\/dotnetdicas.com.br\/wp-content\/uploads\/2023\/12\/lista-de-listas1024x260-300x76.png 300w, https:\/\/dotnetdicas.com.br\/wp-content\/uploads\/2023\/12\/lista-de-listas1024x260-768x195.png 768w, https:\/\/dotnetdicas.com.br\/wp-content\/uploads\/2023\/12\/lista-de-listas1024x260.png 1024w\" sizes=\"(max-width: 734px) 100vw, 734px\" \/><\/p>\n<div class=\"bg-black rounded-md\">\n<div class=\"flex items-center relative text-gray-200 bg-gray-800 dark:bg-token-surface-primary px-4 py-2 text-xs font-sans justify-between rounded-t-md\"><span style=\"font-family: verdana, geneva, sans-serif;\">Aqui, <em>listaDeListas<\/em> \u00e9 uma lista que cont\u00e9m tr\u00eas listas, cada uma com tr\u00eas inteiros. <em><strong>&#8220;Achatar&#8221;<\/strong><\/em> essa estrutura significa transform\u00e1-la em uma \u00fanica lista que contenha todos os inteiros:<\/span><\/div>\n<div><\/div>\n<\/div>\n<div><span style=\"font-family: verdana, geneva, sans-serif;\"><img decoding=\"async\" loading=\"lazy\" class=\"aligncenter wp-image-186\" src=\"http:\/\/dotnetdicas.com.br\/wp-content\/uploads\/2023\/12\/listaachatada1024x140-300x41.png\" alt=\"SelectMany - lista achatada\" width=\"732\" height=\"100\" srcset=\"https:\/\/dotnetdicas.com.br\/wp-content\/uploads\/2023\/12\/listaachatada1024x140-300x41.png 300w, https:\/\/dotnetdicas.com.br\/wp-content\/uploads\/2023\/12\/listaachatada1024x140-768x105.png 768w, https:\/\/dotnetdicas.com.br\/wp-content\/uploads\/2023\/12\/listaachatada1024x140.png 1024w\" sizes=\"(max-width: 732px) 100vw, 732px\" \/><\/span><\/div>\n<div><\/div>\n<div><span style=\"font-family: verdana, geneva, sans-serif;\">O <strong>SelectMany<\/strong>\u00a0\u00e9 usado para este prop\u00f3sito. Ele itera por cada subcole\u00e7\u00e3o na cole\u00e7\u00e3o original e extrai seus elementos, combinando-os em uma \u00fanica cole\u00e7\u00e3o linear. Isso \u00e9 particularmente \u00fatil quando voc\u00ea est\u00e1 lidando com cole\u00e7\u00f5es complexas e deseja simplific\u00e1-las para facilitar o processamento ou a an\u00e1lise de dados.<\/span><\/div>\n<div><\/div>\n<h3><span style=\"font-family: verdana, geneva, sans-serif;\">5. Exemplo com SelectMany<\/span><\/h3>\n<div><span style=\"font-family: verdana, geneva, sans-serif;\">Vamos explorar um exemplo mais avan\u00e7ado que demonstra o poder do <strong>SelectMany<\/strong> em cen\u00e1rios com estruturas de dados mais complexas. Para ilustrar isso, imagine que estamos trabalhando em um aplicativo que lida com dados de alunos e suas respectivas notas em diferentes mat\u00e9rias.<\/span><\/div>\n<div><span style=\"font-family: verdana, geneva, sans-serif;\">Primeiro, definimos uma classe Aluno que cont\u00e9m o nome do aluno e uma lista de Notas, onde cada Nota est\u00e1 associada a uma mat\u00e9ria espec\u00edfica.<\/span><\/div>\n<div><\/div>\n<div><img decoding=\"async\" loading=\"lazy\" class=\"aligncenter wp-image-187\" src=\"http:\/\/dotnetdicas.com.br\/wp-content\/uploads\/2023\/12\/alunonota1024x508-300x149.png\" alt=\"SelectMany - classes de exemplo\" width=\"736\" height=\"366\" srcset=\"https:\/\/dotnetdicas.com.br\/wp-content\/uploads\/2023\/12\/alunonota1024x508-300x149.png 300w, https:\/\/dotnetdicas.com.br\/wp-content\/uploads\/2023\/12\/alunonota1024x508-768x381.png 768w, https:\/\/dotnetdicas.com.br\/wp-content\/uploads\/2023\/12\/alunonota1024x508.png 1024w\" sizes=\"(max-width: 736px) 100vw, 736px\" \/><\/div>\n<div><\/div>\n<div><span style=\"font-family: verdana, geneva, sans-serif;\">Agora, suponhamos que temos uma lista de Aluno, onde cada aluno tem uma lista de Nota. Nosso objetivo \u00e9 criar uma lista \u00fanica de todas as notas de todos os alunos, talvez para calcular uma m\u00e9dia geral ou para outras an\u00e1lises.<\/span><\/div>\n<div><\/div>\n<div><span style=\"font-family: verdana, geneva, sans-serif;\">Aqui est\u00e1 como podemos usar <strong>SelectMany<\/strong> para alcan\u00e7ar isso:<\/span><\/div>\n<div><\/div>\n<div><img decoding=\"async\" loading=\"lazy\" class=\"aligncenter wp-image-188\" src=\"http:\/\/dotnetdicas.com.br\/wp-content\/uploads\/2023\/12\/selectmanynotas-1024x315-1-300x92.png\" alt=\"SelectMany - uso em c#\" width=\"743\" height=\"228\" srcset=\"https:\/\/dotnetdicas.com.br\/wp-content\/uploads\/2023\/12\/selectmanynotas-1024x315-1-300x92.png 300w, https:\/\/dotnetdicas.com.br\/wp-content\/uploads\/2023\/12\/selectmanynotas-1024x315-1-768x236.png 768w, https:\/\/dotnetdicas.com.br\/wp-content\/uploads\/2023\/12\/selectmanynotas-1024x315-1.png 1024w\" sizes=\"(max-width: 743px) 100vw, 743px\" \/><\/div>\n<div><\/div>\n<div><span style=\"font-family: verdana, geneva, sans-serif;\">Neste exemplo, cada Aluno tem uma lista de Notas, e queremos uma \u00fanica lista que inclua todas as Notas de todos os Alunos. Usando <strong>SelectMany<\/strong>, conseguimos <em>achatar<\/em> essa estrutura de dados complexa em uma \u00fanica sequ\u00eancia que \u00e9 f\u00e1cil de iterar e analisar.<\/span><\/div>\n<h3><span style=\"font-family: verdana, geneva, sans-serif;\">6. Conclus\u00e3o<\/span><\/h3>\n<div><span style=\"font-family: verdana, geneva, sans-serif;\"><strong>SelectMany<\/strong> \u00e9, sem d\u00favida, uma ferramenta incrivelmente \u00fatil no arsenal de qualquer desenvolvedor C#. Primeiramente, ele simplifica o trabalho com cole\u00e7\u00f5es aninhadas, tornando o c\u00f3digo mais limpo e f\u00e1cil de entender. Al\u00e9m disso, ao dominar <strong>SelectMany<\/strong>, voc\u00ea pode escrever consultas LINQ mais eficientes. Por conseguinte, isso ajuda a manter seu c\u00f3digo organizado e eficaz.<\/span><\/div>\n<div><\/div>\n","protected":false},"excerpt":{"rendered":"<p>Ol\u00e1, Devs! O m\u00e9todo SelectMany em C# \u00e9 uma ferramenta poderosa, por\u00e9m frequentemente subutilizada. Este artigo vai mergulhar nas capacidades do SelectMany, explicando como ele pode simplificar seu c\u00f3digo ao trabalhar com cole\u00e7\u00f5es de cole\u00e7\u00f5es. Com SelectMany, voc\u00ea pode transformar estruturas de dados complexas em sequ\u00eancias simples e gerenci\u00e1veis, melhorando a legibilidade e efici\u00eancia do [&hellip;]<\/p>\n","protected":false},"author":2,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[5],"tags":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v21.1 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>M\u00e9todo SelectMany em C# - DotNetDicas - C\u00f3digo forte, Carreira mais forte<\/title>\n<meta name=\"description\" content=\"O m\u00e9todo SelectMany em C# \u00e9 uma ferramenta poderosa, por\u00e9m frequentemente subutilizada. Este artigo vai mergulhar nas capacidades do...\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/dotnetdicas.com.br\/?p=184\" \/>\n<meta property=\"og:locale\" content=\"pt_BR\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"M\u00e9todo SelectMany em C# - DotNetDicas - C\u00f3digo forte, Carreira mais forte\" \/>\n<meta property=\"og:description\" content=\"O m\u00e9todo SelectMany em C# \u00e9 uma ferramenta poderosa, por\u00e9m frequentemente subutilizada. Este artigo vai mergulhar nas capacidades do...\" \/>\n<meta property=\"og:url\" content=\"https:\/\/dotnetdicas.com.br\/?p=184\" \/>\n<meta property=\"og:site_name\" content=\"DotNetDicas - C\u00f3digo forte, Carreira mais forte\" \/>\n<meta property=\"article:published_time\" content=\"2023-12-13T21:04:29+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2023-12-13T21:15:14+00:00\" \/>\n<meta property=\"og:image\" content=\"http:\/\/dotnetdicas.com.br\/wp-content\/uploads\/2023\/12\/lista-de-listas1024x260-300x76.png\" \/>\n<meta name=\"author\" content=\"L\u00facio Torres\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Escrito por\" \/>\n\t<meta name=\"twitter:data1\" content=\"L\u00facio Torres\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. tempo de leitura\" \/>\n\t<meta name=\"twitter:data2\" content=\"4 minutos\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\/\/dotnetdicas.com.br\/?p=184\",\"url\":\"https:\/\/dotnetdicas.com.br\/?p=184\",\"name\":\"M\u00e9todo SelectMany em C# - DotNetDicas - C\u00f3digo forte, Carreira mais forte\",\"isPartOf\":{\"@id\":\"https:\/\/dotnetdicas.com.br\/#website\"},\"datePublished\":\"2023-12-13T21:04:29+00:00\",\"dateModified\":\"2023-12-13T21:15:14+00:00\",\"author\":{\"@id\":\"https:\/\/dotnetdicas.com.br\/#\/schema\/person\/368975f3d3f2d0c3c1d7b176c555b3fa\"},\"description\":\"O m\u00e9todo SelectMany em C# \u00e9 uma ferramenta poderosa, por\u00e9m frequentemente subutilizada. Este artigo vai mergulhar nas capacidades do...\",\"breadcrumb\":{\"@id\":\"https:\/\/dotnetdicas.com.br\/?p=184#breadcrumb\"},\"inLanguage\":\"pt-BR\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/dotnetdicas.com.br\/?p=184\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/dotnetdicas.com.br\/?p=184#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"In\u00edcio\",\"item\":\"https:\/\/dotnetdicas.com.br\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"M\u00e9todo SelectMany em C#\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/dotnetdicas.com.br\/#website\",\"url\":\"https:\/\/dotnetdicas.com.br\/\",\"name\":\"DotNetDicas - C\u00f3digo forte, Carreira mais forte\",\"description\":\"\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/dotnetdicas.com.br\/?s={search_term_string}\"},\"query-input\":\"required name=search_term_string\"}],\"inLanguage\":\"pt-BR\"},{\"@type\":\"Person\",\"@id\":\"https:\/\/dotnetdicas.com.br\/#\/schema\/person\/368975f3d3f2d0c3c1d7b176c555b3fa\",\"name\":\"L\u00facio Torres\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"pt-BR\",\"@id\":\"https:\/\/dotnetdicas.com.br\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/c4d33f0feb1d62f7769da1983149ca69?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/c4d33f0feb1d62f7769da1983149ca69?s=96&d=mm&r=g\",\"caption\":\"L\u00facio Torres\"},\"sameAs\":[\"https:\/\/dotnetdicas.com.br\"],\"url\":\"https:\/\/dotnetdicas.com.br\/?author=2\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"M\u00e9todo SelectMany em C# - DotNetDicas - C\u00f3digo forte, Carreira mais forte","description":"O m\u00e9todo SelectMany em C# \u00e9 uma ferramenta poderosa, por\u00e9m frequentemente subutilizada. Este artigo vai mergulhar nas capacidades do...","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/dotnetdicas.com.br\/?p=184","og_locale":"pt_BR","og_type":"article","og_title":"M\u00e9todo SelectMany em C# - DotNetDicas - C\u00f3digo forte, Carreira mais forte","og_description":"O m\u00e9todo SelectMany em C# \u00e9 uma ferramenta poderosa, por\u00e9m frequentemente subutilizada. Este artigo vai mergulhar nas capacidades do...","og_url":"https:\/\/dotnetdicas.com.br\/?p=184","og_site_name":"DotNetDicas - C\u00f3digo forte, Carreira mais forte","article_published_time":"2023-12-13T21:04:29+00:00","article_modified_time":"2023-12-13T21:15:14+00:00","og_image":[{"url":"http:\/\/dotnetdicas.com.br\/wp-content\/uploads\/2023\/12\/lista-de-listas1024x260-300x76.png"}],"author":"L\u00facio Torres","twitter_card":"summary_large_image","twitter_misc":{"Escrito por":"L\u00facio Torres","Est. tempo de leitura":"4 minutos"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/dotnetdicas.com.br\/?p=184","url":"https:\/\/dotnetdicas.com.br\/?p=184","name":"M\u00e9todo SelectMany em C# - DotNetDicas - C\u00f3digo forte, Carreira mais forte","isPartOf":{"@id":"https:\/\/dotnetdicas.com.br\/#website"},"datePublished":"2023-12-13T21:04:29+00:00","dateModified":"2023-12-13T21:15:14+00:00","author":{"@id":"https:\/\/dotnetdicas.com.br\/#\/schema\/person\/368975f3d3f2d0c3c1d7b176c555b3fa"},"description":"O m\u00e9todo SelectMany em C# \u00e9 uma ferramenta poderosa, por\u00e9m frequentemente subutilizada. Este artigo vai mergulhar nas capacidades do...","breadcrumb":{"@id":"https:\/\/dotnetdicas.com.br\/?p=184#breadcrumb"},"inLanguage":"pt-BR","potentialAction":[{"@type":"ReadAction","target":["https:\/\/dotnetdicas.com.br\/?p=184"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/dotnetdicas.com.br\/?p=184#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"In\u00edcio","item":"https:\/\/dotnetdicas.com.br\/"},{"@type":"ListItem","position":2,"name":"M\u00e9todo SelectMany em C#"}]},{"@type":"WebSite","@id":"https:\/\/dotnetdicas.com.br\/#website","url":"https:\/\/dotnetdicas.com.br\/","name":"DotNetDicas - C\u00f3digo forte, Carreira mais forte","description":"","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/dotnetdicas.com.br\/?s={search_term_string}"},"query-input":"required name=search_term_string"}],"inLanguage":"pt-BR"},{"@type":"Person","@id":"https:\/\/dotnetdicas.com.br\/#\/schema\/person\/368975f3d3f2d0c3c1d7b176c555b3fa","name":"L\u00facio Torres","image":{"@type":"ImageObject","inLanguage":"pt-BR","@id":"https:\/\/dotnetdicas.com.br\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/c4d33f0feb1d62f7769da1983149ca69?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/c4d33f0feb1d62f7769da1983149ca69?s=96&d=mm&r=g","caption":"L\u00facio Torres"},"sameAs":["https:\/\/dotnetdicas.com.br"],"url":"https:\/\/dotnetdicas.com.br\/?author=2"}]}},"_links":{"self":[{"href":"https:\/\/dotnetdicas.com.br\/index.php?rest_route=\/wp\/v2\/posts\/184"}],"collection":[{"href":"https:\/\/dotnetdicas.com.br\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/dotnetdicas.com.br\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/dotnetdicas.com.br\/index.php?rest_route=\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/dotnetdicas.com.br\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=184"}],"version-history":[{"count":3,"href":"https:\/\/dotnetdicas.com.br\/index.php?rest_route=\/wp\/v2\/posts\/184\/revisions"}],"predecessor-version":[{"id":191,"href":"https:\/\/dotnetdicas.com.br\/index.php?rest_route=\/wp\/v2\/posts\/184\/revisions\/191"}],"wp:attachment":[{"href":"https:\/\/dotnetdicas.com.br\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=184"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/dotnetdicas.com.br\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=184"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/dotnetdicas.com.br\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=184"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}