C# 使用linq连接表并在视图中显示
这是我的密码C# 使用linq连接表并在视图中显示,c#,asp.net-mvc,linq,linq-to-entities,C#,Asp.net Mvc,Linq,Linq To Entities,这是我的密码 public List<InvoiceJoin> ShowIvoiceList() { InvoiceJoin ij = new InvoiceJoin(); List<InvoiceJoin> list; var data = (from t in _Entity.TblInvoices join t0 in _Entity.TblClients on new { ReceiverCode = t.ReceiverCode } equa
public List<InvoiceJoin> ShowIvoiceList()
{
InvoiceJoin ij = new InvoiceJoin();
List<InvoiceJoin> list;
var data = (from t in _Entity.TblInvoices join t0 in _Entity.TblClients on new { ReceiverCode = t.ReceiverCode } equals new { ReceiverCode = t0.ClientCode }
select new
{
t.RakeNumber,
t.ReceiverCode,
t.ConsigneeCode,
t.InvoiceNumber,
t.InvoiceDate,
t.RecordStatus,
t0.ClientCode,
t0.ClientDescription,
t0.ClientAddress1,
t0.ClientAddress2,
t0.ClientAddress3,
t0.ClientCity,
t0.ClientState,
t0.ClientCountry,
t0.ClientZipCode,
}).ToList();
foreach (var item in data)
{
list.Add(item);
}
return list;
}
它不起作用
我需要在单视图中显示两个sql表数据列表我如何在linq中执行此操作请一些ne帮助朋友我需要在html表中显示 像这样使用LINQ
Union
方法:
var data = (from t in _Entity.TblInvoices
join t0 in _Entity.TblClients on new { ReceiverCode = t.ReceiverCode } equals new { ReceiverCode = t0.ClientCode }
select new
{
t.RakeNumber,
t.ReceiverCode,
t.ConsigneeCode,
t.InvoiceNumber,
t.InvoiceDate,
t.RecordStatus,
t0.ClientCode,
t0.ClientDescription,
t0.ClientAddress1,
t0.ClientAddress2,
t0.ClientAddress3,
t0.ClientCity,
t0.ClientState,
t0.ClientCountry,
t0.ClientZipCode,
}).Union( // 2nd linq query with same result set as first here);
确保您有一个带有构造函数的类InvoiceJoin,它有两个参数:invoice和client
class InvoiceJoin
{
private TblInvoice invoice;
private TblClient client;
public InvoiceJoin(TblInvoice invoice,TblClient client)
{
this.invoice=invoice;
this.client=client;
//...
}
public string RakeNumber{ get{return invoice.RakeNumber} set{invoice.RakeNumber=value;}}
//... ather invoice properties you want to see in grid
public string ClientCode{ get{return client.ClientCode} set{client.ClientCode=value;}}
// ...ather clientproperties you want to see in grid
}
加载数据:
List<InvoiceJoin> data = (from invoice in db.TblInvoices
join client in db.TblClients
on invoice.ReceiverCode equals client.client
select new{Invoice=invoice,Client=client}).ToList()
.Select(n=>new InvoiceJoin(n.Invoice,n.Client)).ToList()
列表数据=(来自db.TblInvoices中的发票)
在db.TblClients中加入客户端
发票上的.ReceiverCode等于client.client
选择新建{Invoice=Invoice,Client=Client})
.Select(n=>newinvoicejoin(n.Invoice,n.Client)).ToList()
您可以将返回的列表传递给视图。从这个角度来看,,数据只是一个项目的集合。如果我使用union,我无法理解发生了什么,然后如何将此列表传递到模型中进行查看或绑定,以及如何在invoicejoin类中进行操作我如何可以像这样连接两个以上的表OK但它不起作用我需要哪一列,然后我只需要在invoicejoin类中设置属性,可以吗好吧,我的朋友,它在工作,但我如何才能在视图中传递,例如(foreach(模型中的var项){})这样的,它不会出现,我如何才能添加3个这样的表问题是如何显示这两个表。这是一个符合任务的简单解决方案。但是,如果目标是显示所需数量的表,那么就应该考虑为join类实现动态字典。在这种情况下,它的构造函数将获取objects集合并生成所有需要的属性。如果您只需要显示值,则可以使用所需值的元组从查询匿名类型返回,并将此集合直接绑定到网格,而无需joinclass覆盖
List<InvoiceJoin> data = (from invoice in db.TblInvoices
join client in db.TblClients
on invoice.ReceiverCode equals client.client
select new{Invoice=invoice,Client=client}).ToList()
.Select(n=>new InvoiceJoin(n.Invoice,n.Client)).ToList()