2016-02-15 51 views
0

我想从linq查询中获取3列,我想将3列值放入我的viewbag中。Linq查询以获得c#实体框架中的多列

这是我的控制器代码。

public ActionResult Create(ModelName ObjectName) 
{ 
    DocumentDeleteBAL DALObject = new DocumentDeleteBAL(); 
    int client_id = Convert.ToInt32(ModelName.client_id); 
    int emp_id = Convert.ToInt32(ModelName.emp_id); 
    int empcitizen_id = Convert.ToInt32(ModelName.empcitizen_id); 

    var tm = DALObject.GetDetails(client_id, emp_id, empcitizen_id); 
    return View(ObjectName); 
} 

这是我的DAL代码。

public List<ModelName> GetDetails(int client_id,int emp_id,int empcitizen_id) 
{ 
    List<ModelName> del = (from c in db.ModelName 
          where c.clientid == client_id 
           && c.employeeid == emp_id 
           && c.empcitizenid == empcitizen_id 
          select c).ToList(); 
    return del; 
} 

在这里,我传递3个ID,如果匹配,我想显示客户端名称,员工姓名,国籍。我被困在这条线

var tm = docdel.GetDetails(client_id, emp_id, empcitizen_id); 
+2

Offtopic,但请做一些关于你的命名。我已经可惜了那个必须在你后面维护代码的人:( –

+0

当然让我编辑... –

+0

让我知道你还有什么担心,我想返回client_name,emp_name,国籍,我想复制详细信息到viewsbag –

回答

0

您已经获得的全部细节,所有你需要做的是采取的第一个对象(从您的收藏),因为它返回List<ts_upld_doc>并设置ViewBag这样的事情: -

var tm = docdel.GetDetails(client_id, emp_id, empcitizen_id).FirstOrDefault(); 
if(tm != null) 
{ 
    ViewBag.Clientname = tm.Clientname; 
    ..and so on 
} 
+1

是的,我不知道firstordefault()...工作正常 –

0

如果您GetDetails只返回一个对象,然后,

public ModelName GetDetails(int client_id,int emp_id,int empcitizen_id) 
{ 
    ModelName del = (from c in db.ModelName where c.clientid == client_id && c.employeeid == emp_id && c.empcitizenid == empcitizen_id select c).ToList(); 
    return del; 
} 
在你的控制器

var tm = docdel.GetDetails(client_id, emp_id, empcitizen_id); 

tm包含您的模型。然后,

viewbag. Clientname=tm. Clientname 
viewbag.employee name=tm.employee name 
viewbag.nationality=tm.nationality