LINQ帮助初学者选择多个表格
本文关键字:表格 选择 帮助 初学者 LINQ | 更新日期: 2023-09-27 18:00:37
我有下面的存储库,其中包括三种返回数据库对象的方法,前两个查询可以很好地工作,因为它们只返回一个数据列表,但是由于第三个方法需要从两个表中进行选择,我有点困惑如何做到这一点。
有人能告诉我正确的方向吗?如何编写LINQ查询,从两个相关的表中进行选择,并传递到下面所示的存储库中的最后一个方法(CustomerAndSites)中-这些表与客户ID字段相关
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using CustomerDatabase.Domain.Abstract;
using CustomerDatabase.Domain.Concrete;
using CustomerDatabase.Domain.Entities;
using System.Data.Linq.Mapping;
using System.Data.Linq;
using System.Web.Mvc;
namespace CustomerDatabase.Domain.Concrete
{
class SqlCustomersAndSitesRepository : ICustomersAndSitesRepository
{
public Table<CustomerSite> customerSitesTable;
public Table<Customer> customerTable;
public SqlCustomersAndSitesRepository(string connectionString)
{
customerSitesTable = (new DataContext(connectionString)).GetTable<CustomerSite>();
customerTable = (new DataContext(connectionString)).GetTable<Customer>();
}
public IQueryable<CustomerSite> CustomerSites
{
get { return customerSitesTable; }
}
public IQueryable<Customer> Customers
{
get { return customerTable; }
}
public IQueryable <ICustomersAndSitesRepository> CustomerAndSites
{
get { return CustomerAndSites; }
}
}
}
===更新
这是我的ICustomersAndSitesM接口,我在哪里定义CustomersAndSitesMix,我需要将其创建为一个单独的实体吗?我的UI项目中有一个视图模型,其中包含两个对象的属性。
使用系统;使用System.Collections.Generic;使用System.Linq;使用System.Text;使用CustomerDatabase.Domain.Entities;
命名空间CustomerDatabase.Domain.Abstract{接口ICustomersAndSitesM{IQueryable客户{get;}IQueryable CustomerSites{get;}}
}
如果您的两个表实际上用外键正确链接,那么当您拉入父记录时,LINQ也会拉入子记录。您需要检查DataContext在调试时返回的模型,并且您应该能够通过足够的挖掘来查看任何链接的记录。例如,如果您有链接到客户的站点,在客户域模型结果中,您应该看到一个名为"站点"的字段,该字段是链接到该客户的站点域模型的列表。
我想您实际上想要得到一个"CustomersAndSitesMix",而不是返回一个"ICustomersAndSitesPositionory"。如果是这样,你可以这样做:
public IQueryable<ICustomersAndSitesM> CustomerAndSites
{
get
{
return from customer in customerTable
join site in customerSitesTable
on customer.PLACEKEYHERE equals site.PLACEKEYHERE
select new CustomersAndSitesMix(customer, site);
}
}