Asp.net mvc MVC网格到Excel

Asp.net mvc MVC网格到Excel,asp.net-mvc,linq-to-sql,gridview,Asp.net Mvc,Linq To Sql,Gridview,我发现这个项目/教程: 而且效果很好!但是,我只能让它与一个模型一起工作。因此,如果我只采用我的组织模式,它会非常有效。但是,我需要通过运行SQL查询来填充GridView。我原以为LINQ到SQL可以工作,但我想不出来 这将使用我的组织模型中的数据加载GridView,并将其发送到视图 private VAGTCEntities db = new VAGTCEntities(); public ActionResult Index() { ViewBag.Message = "Wel

我发现这个项目/教程:

而且效果很好!但是,我只能让它与一个模型一起工作。因此,如果我只采用我的组织模式,它会非常有效。但是,我需要通过运行SQL查询来填充GridView。我原以为LINQ到SQL可以工作,但我想不出来

这将使用我的组织模型中的数据加载GridView,并将其发送到视图

private VAGTCEntities db = new VAGTCEntities();
public ActionResult Index()
{
    ViewBag.Message = "Welcome to ASP.NET MVC!";
    List<Organization> model = db.Organizations.ToList();

    GridView gv = new GridView();
    gv.DataSource = model;
    gv.DataBind();
    Session["Organizations"] = gv;

    return View(model);
}
简单!但是,我不知道如何使用LINQtoSQL查询。我需要能够引用多个表。例如,拉入特定县和州的组织的所有地址(OrganizationAddress)以及组织名称(Organization)。我想我必须使用ViewModel,但是我仍然无法填充它

组织模式:

namespace VAGTC.Models
{
    using System;
    using System.Collections.Generic;
    using System.ComponentModel.DataAnnotations;
    public partial class Organization
    {
        public Organization()
        {
            this.ContactMTMOrganizations = new HashSet<ContactMTMOrganization>();
            this.ContactTitles = new HashSet<ContactTitle>();
            this.OrganizationAddresses = new HashSet<OrganizationAddress>();
            this.OrganizationBusinessTypes = new HashSet<OrganizationBusinessType>();
            this.OrganizationCountries = new HashSet<OrganizationCountry>();
            this.OrganizationEmails = new HashSet<OrganizationEmail>();
            this.OrganizationIndustryCodes = new HashSet<OrganizationIndustryCode>();
            this.OrganizationMemberships = new HashSet<OrganizationMembership>();
            this.OrganizationNotes = new HashSet<OrganizationNote>();
            this.OrganizationPhones = new HashSet<OrganizationPhone>();
            this.OrganizationWebsites = new HashSet<OrganizationWebsite>();
        }

        [Display(Name = "Organization ID:")]
        public int OrganizationID { get; set; }
        [Display(Name = "Organization Name:")]
        public string Name { get; set; }

        public virtual ICollection<ContactMTMOrganization> ContactMTMOrganizations { get; set; }
        public virtual ICollection<ContactTitle> ContactTitles { get; set; }
        public virtual ICollection<OrganizationAddress> OrganizationAddresses { get; set; }
        public virtual ICollection<OrganizationBusinessType> OrganizationBusinessTypes { get; set; }
        public virtual ICollection<OrganizationCountry> OrganizationCountries { get; set; }
        public virtual ICollection<OrganizationEmail> OrganizationEmails { get; set; }
        public virtual ICollection<OrganizationIndustryCode> OrganizationIndustryCodes { get; set; }
        public virtual ICollection<OrganizationMembership> OrganizationMemberships { get; set; }
        public virtual ICollection<OrganizationNote> OrganizationNotes { get; set; }
        public virtual ICollection<OrganizationPhone> OrganizationPhones { get; set; }
        public virtual ICollection<OrganizationWebsite> OrganizationWebsites { get; set; }
    }
}
我将非常感激踢向正确的方向

多谢各位

编辑*

我认为这可以归结为能够填充如下列表:

List<Organization> model = db.Organizations.ToList();
List model=db.Organizations.ToList();

但是来自多个表。仍然在玩ViewModels,但它是空的,因为我不知道如何用Linq to SQL填充ViewModel

本质上,您需要在实体之间执行相当于SQL连接的操作。如果启用了延迟加载,则可以自动访问与主组织实体相关的所有实体。如果没有,您可以使用即时加载来访问相同的数据(例如使用
db.Organizations.Include(o=>o.OrganizationAddress).ToList()


也可以使用Linq到实体联接方法。如果要使用ViewModel,可能需要创建一个类来存储组织和相关实体中感兴趣的属性。您只需要从实体对象(在本例中,对于组织集合中的每个项目)填充它的属性。

本质上,您需要在实体之间执行相当于SQL联接的操作。如果启用了延迟加载,则可以自动访问与主组织实体相关的所有实体。如果没有,您可以使用即时加载来访问相同的数据(例如使用
db.Organizations.Include(o=>o.OrganizationAddress).ToList()


也可以使用Linq到实体联接方法。如果要使用ViewModel,可能需要创建一个类来存储组织和相关实体中感兴趣的属性。您只需要从实体对象中填充它的属性(在本例中,针对组织集合中的每个项目)。

您可能也想看看这个:我当然会!非常感谢你,你可能也想看看这个:我当然会的!非常感谢你谢谢你-今晚我要试试这个!谢谢-我今晚就试试这个!
namespace VAGTC.Models
{
    using System;
    using System.Collections.Generic;
    using System.ComponentModel.DataAnnotations;
    public partial class Organization
    {
        public Organization()
        {
            this.ContactMTMOrganizations = new HashSet<ContactMTMOrganization>();
            this.ContactTitles = new HashSet<ContactTitle>();
            this.OrganizationAddresses = new HashSet<OrganizationAddress>();
            this.OrganizationBusinessTypes = new HashSet<OrganizationBusinessType>();
            this.OrganizationCountries = new HashSet<OrganizationCountry>();
            this.OrganizationEmails = new HashSet<OrganizationEmail>();
            this.OrganizationIndustryCodes = new HashSet<OrganizationIndustryCode>();
            this.OrganizationMemberships = new HashSet<OrganizationMembership>();
            this.OrganizationNotes = new HashSet<OrganizationNote>();
            this.OrganizationPhones = new HashSet<OrganizationPhone>();
            this.OrganizationWebsites = new HashSet<OrganizationWebsite>();
        }

        [Display(Name = "Organization ID:")]
        public int OrganizationID { get; set; }
        [Display(Name = "Organization Name:")]
        public string Name { get; set; }

        public virtual ICollection<ContactMTMOrganization> ContactMTMOrganizations { get; set; }
        public virtual ICollection<ContactTitle> ContactTitles { get; set; }
        public virtual ICollection<OrganizationAddress> OrganizationAddresses { get; set; }
        public virtual ICollection<OrganizationBusinessType> OrganizationBusinessTypes { get; set; }
        public virtual ICollection<OrganizationCountry> OrganizationCountries { get; set; }
        public virtual ICollection<OrganizationEmail> OrganizationEmails { get; set; }
        public virtual ICollection<OrganizationIndustryCode> OrganizationIndustryCodes { get; set; }
        public virtual ICollection<OrganizationMembership> OrganizationMemberships { get; set; }
        public virtual ICollection<OrganizationNote> OrganizationNotes { get; set; }
        public virtual ICollection<OrganizationPhone> OrganizationPhones { get; set; }
        public virtual ICollection<OrganizationWebsite> OrganizationWebsites { get; set; }
    }
}
namespace VAGTC.Models
{
    using System;
    using System.Collections.Generic;
    using System.ComponentModel.DataAnnotations;

    public partial class OrganizationAddress
    {
        [Display(Name = "Street:")]
        public string StreetID { get; set; }
        [Display(Name = "City:")]
        public string CityID { get; set; }
        [Display(Name = "Organization ID:")]
        public int OrganizationID { get; set; }
        [Display(Name = "Country:")]
        public string CountryNameID { get; set; }
        [Display(Name = "County:")]
        public string CountyNameID { get; set; }
        [Display(Name = "County State:")]
        public string CountyStateID { get; set; }
        [Display(Name = "State:")]
        public string State { get; set; }
        [Display(Name = "Zip-code:")]
        public string ZipCode { get; set; }
        [Display(Name = "Address Type:")]
        public string Type { get; set; }

        public virtual Country Country { get; set; }
        public virtual County County { get; set; }
        public virtual Organization Organization { get; set; }

        public string FullAddress
        {
            get
            {
                return StreetID + ", " + CityID + ", " + State + " " + ZipCode + ", " + CountryNameID;
            }
        }
        public string FullCounty
        {
            get
            {
                return CountyNameID + ", " + CountyStateID;
            }
        }

    }
}
List<Organization> model = db.Organizations.ToList();