Is it possible to display a joined query in a DataGridView?





.everyoneloves__top-leaderboard:empty,.everyoneloves__mid-leaderboard:empty,.everyoneloves__bot-mid-leaderboard:empty{ height:90px;width:728px;box-sizing:border-box;
}







0















I have an Entity Framework application and I need to set the DataSource property of a BindingSource to the result of a joined query like so:



var joined = _context.Products.Join(_context.Categories, p=>p.CategoryId, c=>c.CategoryId, (product, category) => new
{
ProductName = product.Name,
CategoryName = category.Name
});


Is this possible or DataSources must equate to DbSet<>s?
For instance, this works:



this.supplierBindingSource.DataSource = _context.Suppliers.Local.ToBindingList();


Regards,
Juan










share|improve this question





























    0















    I have an Entity Framework application and I need to set the DataSource property of a BindingSource to the result of a joined query like so:



    var joined = _context.Products.Join(_context.Categories, p=>p.CategoryId, c=>c.CategoryId, (product, category) => new
    {
    ProductName = product.Name,
    CategoryName = category.Name
    });


    Is this possible or DataSources must equate to DbSet<>s?
    For instance, this works:



    this.supplierBindingSource.DataSource = _context.Suppliers.Local.ToBindingList();


    Regards,
    Juan










    share|improve this question

























      0












      0








      0








      I have an Entity Framework application and I need to set the DataSource property of a BindingSource to the result of a joined query like so:



      var joined = _context.Products.Join(_context.Categories, p=>p.CategoryId, c=>c.CategoryId, (product, category) => new
      {
      ProductName = product.Name,
      CategoryName = category.Name
      });


      Is this possible or DataSources must equate to DbSet<>s?
      For instance, this works:



      this.supplierBindingSource.DataSource = _context.Suppliers.Local.ToBindingList();


      Regards,
      Juan










      share|improve this question














      I have an Entity Framework application and I need to set the DataSource property of a BindingSource to the result of a joined query like so:



      var joined = _context.Products.Join(_context.Categories, p=>p.CategoryId, c=>c.CategoryId, (product, category) => new
      {
      ProductName = product.Name,
      CategoryName = category.Name
      });


      Is this possible or DataSources must equate to DbSet<>s?
      For instance, this works:



      this.supplierBindingSource.DataSource = _context.Suppliers.Local.ToBindingList();


      Regards,
      Juan







      c# entity-framework






      share|improve this question













      share|improve this question











      share|improve this question




      share|improve this question










      asked Nov 16 '18 at 21:51









      Juan DentJuan Dent

      1031213




      1031213
























          2 Answers
          2






          active

          oldest

          votes


















          0














          I believe you would want to create a class for the results of the join and instantiate that as below:



              class ProductCategory
          {
          string ProductName { get; set; }
          string CategoryName { get; set; }
          }

          private void test()
          {
          var joined = _context.Products.Join(_context.Categories, p => p.CategoryId, c => c.CategoryId, (product, category) => new ProductCategory
          {
          ProductName = product.Name,
          CategoryName = category.Name
          });
          }





          share|improve this answer
























          • That's just the first step. The problem is how can you set the DataSource property to a BindingList! So for example, adding the class you suggest allows us to create a DataSource (based on that class) but there is no way to bind that to a binding source or DataGridView because we cannot do this: this.productCategoryBindingSource.DataSource = joined.Local.ToBindingList();

            – Juan Dent
            Nov 17 '18 at 23:09





















          0














          The final solution is:



          var theList = joined.ToList();
          var bindList = new BindingList<ProductCategory>(theList);
          this.dataGridView4.DataSource = bindList;


          This works!






          share|improve this answer
























            Your Answer






            StackExchange.ifUsing("editor", function () {
            StackExchange.using("externalEditor", function () {
            StackExchange.using("snippets", function () {
            StackExchange.snippets.init();
            });
            });
            }, "code-snippets");

            StackExchange.ready(function() {
            var channelOptions = {
            tags: "".split(" "),
            id: "1"
            };
            initTagRenderer("".split(" "), "".split(" "), channelOptions);

            StackExchange.using("externalEditor", function() {
            // Have to fire editor after snippets, if snippets enabled
            if (StackExchange.settings.snippets.snippetsEnabled) {
            StackExchange.using("snippets", function() {
            createEditor();
            });
            }
            else {
            createEditor();
            }
            });

            function createEditor() {
            StackExchange.prepareEditor({
            heartbeatType: 'answer',
            autoActivateHeartbeat: false,
            convertImagesToLinks: true,
            noModals: true,
            showLowRepImageUploadWarning: true,
            reputationToPostImages: 10,
            bindNavPrevention: true,
            postfix: "",
            imageUploader: {
            brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
            contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
            allowUrls: true
            },
            onDemand: true,
            discardSelector: ".discard-answer"
            ,immediatelyShowMarkdownHelp:true
            });


            }
            });














            draft saved

            draft discarded


















            StackExchange.ready(
            function () {
            StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53345911%2fis-it-possible-to-display-a-joined-query-in-a-datagridview%23new-answer', 'question_page');
            }
            );

            Post as a guest















            Required, but never shown

























            2 Answers
            2






            active

            oldest

            votes








            2 Answers
            2






            active

            oldest

            votes









            active

            oldest

            votes






            active

            oldest

            votes









            0














            I believe you would want to create a class for the results of the join and instantiate that as below:



                class ProductCategory
            {
            string ProductName { get; set; }
            string CategoryName { get; set; }
            }

            private void test()
            {
            var joined = _context.Products.Join(_context.Categories, p => p.CategoryId, c => c.CategoryId, (product, category) => new ProductCategory
            {
            ProductName = product.Name,
            CategoryName = category.Name
            });
            }





            share|improve this answer
























            • That's just the first step. The problem is how can you set the DataSource property to a BindingList! So for example, adding the class you suggest allows us to create a DataSource (based on that class) but there is no way to bind that to a binding source or DataGridView because we cannot do this: this.productCategoryBindingSource.DataSource = joined.Local.ToBindingList();

              – Juan Dent
              Nov 17 '18 at 23:09


















            0














            I believe you would want to create a class for the results of the join and instantiate that as below:



                class ProductCategory
            {
            string ProductName { get; set; }
            string CategoryName { get; set; }
            }

            private void test()
            {
            var joined = _context.Products.Join(_context.Categories, p => p.CategoryId, c => c.CategoryId, (product, category) => new ProductCategory
            {
            ProductName = product.Name,
            CategoryName = category.Name
            });
            }





            share|improve this answer
























            • That's just the first step. The problem is how can you set the DataSource property to a BindingList! So for example, adding the class you suggest allows us to create a DataSource (based on that class) but there is no way to bind that to a binding source or DataGridView because we cannot do this: this.productCategoryBindingSource.DataSource = joined.Local.ToBindingList();

              – Juan Dent
              Nov 17 '18 at 23:09
















            0












            0








            0







            I believe you would want to create a class for the results of the join and instantiate that as below:



                class ProductCategory
            {
            string ProductName { get; set; }
            string CategoryName { get; set; }
            }

            private void test()
            {
            var joined = _context.Products.Join(_context.Categories, p => p.CategoryId, c => c.CategoryId, (product, category) => new ProductCategory
            {
            ProductName = product.Name,
            CategoryName = category.Name
            });
            }





            share|improve this answer













            I believe you would want to create a class for the results of the join and instantiate that as below:



                class ProductCategory
            {
            string ProductName { get; set; }
            string CategoryName { get; set; }
            }

            private void test()
            {
            var joined = _context.Products.Join(_context.Categories, p => p.CategoryId, c => c.CategoryId, (product, category) => new ProductCategory
            {
            ProductName = product.Name,
            CategoryName = category.Name
            });
            }






            share|improve this answer












            share|improve this answer



            share|improve this answer










            answered Nov 17 '18 at 1:41









            Jon VoteJon Vote

            38710




            38710













            • That's just the first step. The problem is how can you set the DataSource property to a BindingList! So for example, adding the class you suggest allows us to create a DataSource (based on that class) but there is no way to bind that to a binding source or DataGridView because we cannot do this: this.productCategoryBindingSource.DataSource = joined.Local.ToBindingList();

              – Juan Dent
              Nov 17 '18 at 23:09





















            • That's just the first step. The problem is how can you set the DataSource property to a BindingList! So for example, adding the class you suggest allows us to create a DataSource (based on that class) but there is no way to bind that to a binding source or DataGridView because we cannot do this: this.productCategoryBindingSource.DataSource = joined.Local.ToBindingList();

              – Juan Dent
              Nov 17 '18 at 23:09



















            That's just the first step. The problem is how can you set the DataSource property to a BindingList! So for example, adding the class you suggest allows us to create a DataSource (based on that class) but there is no way to bind that to a binding source or DataGridView because we cannot do this: this.productCategoryBindingSource.DataSource = joined.Local.ToBindingList();

            – Juan Dent
            Nov 17 '18 at 23:09







            That's just the first step. The problem is how can you set the DataSource property to a BindingList! So for example, adding the class you suggest allows us to create a DataSource (based on that class) but there is no way to bind that to a binding source or DataGridView because we cannot do this: this.productCategoryBindingSource.DataSource = joined.Local.ToBindingList();

            – Juan Dent
            Nov 17 '18 at 23:09















            0














            The final solution is:



            var theList = joined.ToList();
            var bindList = new BindingList<ProductCategory>(theList);
            this.dataGridView4.DataSource = bindList;


            This works!






            share|improve this answer




























              0














              The final solution is:



              var theList = joined.ToList();
              var bindList = new BindingList<ProductCategory>(theList);
              this.dataGridView4.DataSource = bindList;


              This works!






              share|improve this answer


























                0












                0








                0







                The final solution is:



                var theList = joined.ToList();
                var bindList = new BindingList<ProductCategory>(theList);
                this.dataGridView4.DataSource = bindList;


                This works!






                share|improve this answer













                The final solution is:



                var theList = joined.ToList();
                var bindList = new BindingList<ProductCategory>(theList);
                this.dataGridView4.DataSource = bindList;


                This works!







                share|improve this answer












                share|improve this answer



                share|improve this answer










                answered Nov 17 '18 at 23:58









                Juan DentJuan Dent

                1031213




                1031213






























                    draft saved

                    draft discarded




















































                    Thanks for contributing an answer to Stack Overflow!


                    • Please be sure to answer the question. Provide details and share your research!

                    But avoid



                    • Asking for help, clarification, or responding to other answers.

                    • Making statements based on opinion; back them up with references or personal experience.


                    To learn more, see our tips on writing great answers.




                    draft saved


                    draft discarded














                    StackExchange.ready(
                    function () {
                    StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53345911%2fis-it-possible-to-display-a-joined-query-in-a-datagridview%23new-answer', 'question_page');
                    }
                    );

                    Post as a guest















                    Required, but never shown





















































                    Required, but never shown














                    Required, but never shown












                    Required, but never shown







                    Required, but never shown

































                    Required, but never shown














                    Required, but never shown












                    Required, but never shown







                    Required, but never shown







                    Popular posts from this blog

                    Xamarin.iOS Cant Deploy on Iphone

                    Glorious Revolution

                    Dulmage-Mendelsohn matrix decomposition in Python