Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/linq/3.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#_Linq_Asp.net Mvc 4 - Fatal编程技术网

C# 使用具有内部联接的不同表时,无法在linq查询中返回列表

C# 使用具有内部联接的不同表时,无法在linq查询中返回列表,c#,linq,asp.net-mvc-4,C#,Linq,Asp.net Mvc 4,我编写了连接3个表的linq查询。我想以列表的形式返回数据。但据我所知,该列表不会包含属于其他表的数据。 这是我的问题 public List<ts_upld_doc> GetDetails(int client_id, int emp_id, int empcitizen_id) { var truecondn = (from c in db.ts_upld_doc where (((c.upld_clientid == client_id &&

我编写了连接3个表的linq查询。我想以列表的形式返回数据。但据我所知,该列表不会包含属于其他表的数据。 这是我的问题

public List<ts_upld_doc> GetDetails(int client_id, int emp_id, int empcitizen_id)
{
   var truecondn = 
    (from c in db.ts_upld_doc 
     where (((c.upld_clientid == client_id && c.upld_employeeid == emp_id 
              && empcitizen_id == 0) 
           || (c.upld_clientid == client_id && c.upld_empcitizenid == empcitizen_id 
              && emp_id == 0)) 
           || (client_id == 0 && emp_id == 0 && c.upld_empcitizenid == empcitizen_id)) 
           && c.upld_doc_delstatus == 0 select c).ToList();

   if(truecondn.Count>0)
   {
      var data = 
       (from up in db.ts_upld_doc 
        join doc in db.tm_doc_type on up.upld_docid equals doc.doc_typeid 
        join content in db.tr_upld_content on up.upld_docid equals content.upld_docid 
        where content.upld_contentlabel == "Expiry Date" 
        select new 
        {
           doc.doctype_name, 
           doc.doc_typeid, 
           content.upld_contentvalue 
        }).ToList();                  
   }
   return truecondn;             
}
public List<PocoClasses> GetDetails(int client_id, int emp_id, int empcitizen_id)
        {

                var result = (from up in db.ts_upld_doc
                              join doc in db.tm_doc_type on up.upld_docid equals doc.doc_typeid
                              join content in db.tr_upld_content on up.upld_docid equals content.upld_docid
                              select new PocoClasses
                                  {
                                      upld_docid = content.upld_docid,
                                      upld_contentlabel=content.upld_contentlabel,
                                      upld_contentvalue=content.upld_contentvalue


                                  });

            return result.ToList();
        }
        This is how i am trying to bind data to model.


List<PocoClasses> ts = docdel.GetDetails(client_id, emp_id, empcitizen_id);
  model.Upload_List = ts;
public List GetDetails(int-client\u-id、int-emp\u-id、int-emp\u-id)
{
var truecondn=
(来自db.ts\U upld\U文档中的c)
其中((c.upld\u clientid==客户id和&c.upld\u employeeid==emp\u id
&&empcitizen_id==0)
||(c.upld\u clientid==客户端id&&c.upld\u empcitizenid==empcitizen\u id
&&emp_id==0)
||(客户端id==0&&emp\u id==0&&c.upld\u empcitizenid==empcitizen\u id))
&&c.upld_doc_delstatus==0选择c).ToList();
如果(truecondn.计数>0)
{
风险值数据=
(在db.ts\U upld\U文档中从上到下)
在up.upld\u docid上的db.tm\u doc\u type中加入doc等于doc.doc\u typeid
将db.tr_upld_内容中的内容连接到up.upld_docid等于content.upld_docid
其中content.upld_contentlabel==“到期日”
选择新的
{
doc.doctype_名称,
doc.doc\u类型ID,
content.upld\u contentvalue
}).ToList();
}
返回truecondn;
}
列表将包含属于此表的数据。但是我的查询var数据包含来自多个表的数据。那么,将数据传输到控制器的最佳方式是什么呢。我已经用DAL编写了这个查询。我应该在这里使用哪种返回类型?我想要列表形式的数据,因为在控制器中,我将这些数据绑定到模型。但这可能是不可能的。我是否需要创建viewmodel,它可以以列表的形式承载多个表的数据。请建议

这是我的viewmodel和Pocclasses

 public class MyViewModel
    {

        public ts_upld_doc upload_document { get; set; }
        public IList<ts_upld_doc> Upload_List { get; set; }


    }
    public class PocoClasses
    {
        public virtual int upld_docid { get; set; }
        public virtual string upld_contentlabel { get; set; }
        public virtual string upld_contentvalue { get; set; }
    }
公共类MyViewModel
{
公共ts_upld_doc upload_document{get;set;}
公共IList上载_列表{get;set;}
}
公共类Pocclasses
{
公共虚拟整数upld_docid{get;set;}
公共虚拟字符串upld_contentlabel{get;set;}
公共虚拟字符串upld_contentvalue{get;set;}
}
这是我的问题

public List<ts_upld_doc> GetDetails(int client_id, int emp_id, int empcitizen_id)
{
   var truecondn = 
    (from c in db.ts_upld_doc 
     where (((c.upld_clientid == client_id && c.upld_employeeid == emp_id 
              && empcitizen_id == 0) 
           || (c.upld_clientid == client_id && c.upld_empcitizenid == empcitizen_id 
              && emp_id == 0)) 
           || (client_id == 0 && emp_id == 0 && c.upld_empcitizenid == empcitizen_id)) 
           && c.upld_doc_delstatus == 0 select c).ToList();

   if(truecondn.Count>0)
   {
      var data = 
       (from up in db.ts_upld_doc 
        join doc in db.tm_doc_type on up.upld_docid equals doc.doc_typeid 
        join content in db.tr_upld_content on up.upld_docid equals content.upld_docid 
        where content.upld_contentlabel == "Expiry Date" 
        select new 
        {
           doc.doctype_name, 
           doc.doc_typeid, 
           content.upld_contentvalue 
        }).ToList();                  
   }
   return truecondn;             
}
public List<PocoClasses> GetDetails(int client_id, int emp_id, int empcitizen_id)
        {

                var result = (from up in db.ts_upld_doc
                              join doc in db.tm_doc_type on up.upld_docid equals doc.doc_typeid
                              join content in db.tr_upld_content on up.upld_docid equals content.upld_docid
                              select new PocoClasses
                                  {
                                      upld_docid = content.upld_docid,
                                      upld_contentlabel=content.upld_contentlabel,
                                      upld_contentvalue=content.upld_contentvalue


                                  });

            return result.ToList();
        }
        This is how i am trying to bind data to model.


List<PocoClasses> ts = docdel.GetDetails(client_id, emp_id, empcitizen_id);
  model.Upload_List = ts;
public List GetDetails(int-client\u-id、int-emp\u-id、int-emp\u-id)
{
var结果=(从db.ts\u upld\u doc中向上)
在up.upld\u docid上的db.tm\u doc\u type中加入doc等于doc.doc\u typeid
将db.tr_upld_内容中的内容连接到up.upld_docid等于content.upld_docid
选择新的Pocclasses
{
upld_docid=content.upld_docid,
upld_contentlabel=content.upld_contentlabel,
upld\u contentvalue=content.upld\u contentvalue
});
返回result.ToList();
}
这就是我试图将数据绑定到模型的方式。
List ts=docdel.GetDetails(客户id、emp id、emp id);
model.Upload_List=ts;

您需要创建一些DTO/POCO类,以便将数据从数据访问层“传输”到业务层等

因此,使用简单的属性get定义一个普通的类对象MyDto;设置字段。 将这些类放在可以与Dal和业务层代码共享的地方

public List<MyDto> GetDetails(....
{
    var result = (from c in ctx.Table1
                  join p in ctx.Table2 on c.ClientId equals p.ClientId
                  select new MyDto
                  {
                     ClientId = c.ClientId,
                     Field2 = p.SomeField 
                  }

    return result.ToList();
}
公共列表获取详细信息(。。。。
{
var结果=(来自ctx.Table1中的c
在c.ClientId上的ctx.Table2中加入p等于p.ClientId
选择新的MyDto
{
ClientId=c.ClientId,
Field2=p.SomeField
}
返回result.ToList();
}

您需要创建一些DTO/POCO类,以便将数据从数据访问层“传输”到业务层等

因此,使用简单的属性get;set字段定义一个普通的类对象MyDto。 将这些类放在可以与Dal和业务层代码共享的地方

public List<MyDto> GetDetails(....
{
    var result = (from c in ctx.Table1
                  join p in ctx.Table2 on c.ClientId equals p.ClientId
                  select new MyDto
                  {
                     ClientId = c.ClientId,
                     Field2 = p.SomeField 
                  }

    return result.ToList();
}
公共列表获取详细信息(。。。。
{
var结果=(来自ctx.Table1中的c
在c.ClientId上的ctx.Table2中加入p等于p.ClientId
选择新的MyDto
{
ClientId=c.ClientId,
Field2=p.SomeField
}
返回result.ToList();
}

Use-Use-ok。所以在MyDto类中我应该声明字段或其他类?先生,你能给我一个创建poco类的小例子吗?对poco类中要声明什么感到困惑吗?我在上面尝试过,但我无法将列表绑定到模型。我尝试过类似的方法。我会发布上面的代码。我明白了。谢谢richardbOkay。再见ide MyDto类我应该声明字段或其他类?先生,你能给我一个创建poco类的小例子吗?对poco类内部要声明什么感到困惑吗?我在上面尝试过,但我无法将列表绑定到模型。我尝试过类似的方法。我将在上面发布代码。我明白了。谢谢richardb