Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/282.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 使用linq连接表并在视图中显示_C#_Asp.net Mvc_Linq_Linq To Entities - Fatal编程技术网

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()