将 linq 查询结果传递给 viewmodel
Pass linq query result to viewmodel
在我的 MVC web 应用程序中,我有从数据库中获取记录的 linq 查询,我想使用 viewmodel 在视图中显示该记录。我试过以下代码。
[HttpGet]
public ActionResult CreatePDF()
{
RentalAgreementEntities db = new RentalAgreementEntities();
String strSession1 = "39726-10275-6027589725",strStatus = "Y",strUserType = "L";
var q = (from um in db.User_Master
join ut in db.UserType_Master on um.US_SerialNo.ToString() equals ut.UT_UserNo
join pu in db.PropertyUser_Master on ut.UT_SerialNo.ToString() equals pu.PU_UserNo
join pr in db.Property_Master on pu.PU_PropertyNo equals pr.PR_SerialNo.ToString()
where pr.PR_MakerID == strSession1
&& ut.UT_Status == strStatus
&& ut.UT_UserType == strUserType
select new
{
um.US_FirstName,
um.US_LastName
}
).AsEnumerable().Select(um => new User_Master {
US_FirstName = um.US_FirstName.ToString(),
US_LastName=um.US_LastName
}).ToList();
var myviewmodel=new viewmodelPDF()
{
lsusermaster=q.ToList();
}
return View("pdfgenerationvw",myviewmodel);
}
我还创建了 viemodel 来管理要在视图上显示的所有模型(这里,只有一个模型访问代码)。
public class viewmodelPDF
{
public List<User_Master> lsusermaster { get; set; }
}
我的模型 class,我将从数据库中获取记录。
public partial class User_Master
{
public string US_FirstName { get; set; }
public string US_LastName { get; set; }
public int US_SerialNo { get; set; }
}
//Other Models
现在我的问题是,在我的操作代码中,当我试图将查询结果分配给视图模型的 lsusermaster
时,它会给出如下编译器错误。
我不知道,为什么会抛出这个编译错误,如何将查询结果分配给 viemodel 属性?
在 C# 中使用对象初始化程序时,不能在属性之间使用 ;
,而是在初始化程序的末尾使用它
所以只需删除 ;
(或按照建议使用 ,
),并将其移至初始化程序块的末尾
var myviewmodel=new viewmodelPDF()
{
lsusermaster=q.ToList()
};
即使没有更多属性,使用 ,
也能工作...它 "looks" 不好,但是如果您需要它们,添加新属性会更容易...如果代码是最终的,我不会使用它,但这是个人喜好
试试这个:
var myviewmodel=new viewmodelPDF()
{
lsusermaster=q.ToList()
};
在我的 MVC web 应用程序中,我有从数据库中获取记录的 linq 查询,我想使用 viewmodel 在视图中显示该记录。我试过以下代码。
[HttpGet]
public ActionResult CreatePDF()
{
RentalAgreementEntities db = new RentalAgreementEntities();
String strSession1 = "39726-10275-6027589725",strStatus = "Y",strUserType = "L";
var q = (from um in db.User_Master
join ut in db.UserType_Master on um.US_SerialNo.ToString() equals ut.UT_UserNo
join pu in db.PropertyUser_Master on ut.UT_SerialNo.ToString() equals pu.PU_UserNo
join pr in db.Property_Master on pu.PU_PropertyNo equals pr.PR_SerialNo.ToString()
where pr.PR_MakerID == strSession1
&& ut.UT_Status == strStatus
&& ut.UT_UserType == strUserType
select new
{
um.US_FirstName,
um.US_LastName
}
).AsEnumerable().Select(um => new User_Master {
US_FirstName = um.US_FirstName.ToString(),
US_LastName=um.US_LastName
}).ToList();
var myviewmodel=new viewmodelPDF()
{
lsusermaster=q.ToList();
}
return View("pdfgenerationvw",myviewmodel);
}
我还创建了 viemodel 来管理要在视图上显示的所有模型(这里,只有一个模型访问代码)。
public class viewmodelPDF
{
public List<User_Master> lsusermaster { get; set; }
}
我的模型 class,我将从数据库中获取记录。
public partial class User_Master
{
public string US_FirstName { get; set; }
public string US_LastName { get; set; }
public int US_SerialNo { get; set; }
}
//Other Models
现在我的问题是,在我的操作代码中,当我试图将查询结果分配给视图模型的 lsusermaster
时,它会给出如下编译器错误。
我不知道,为什么会抛出这个编译错误,如何将查询结果分配给 viemodel 属性?
在 C# 中使用对象初始化程序时,不能在属性之间使用 ;
,而是在初始化程序的末尾使用它
所以只需删除 ;
(或按照建议使用 ,
),并将其移至初始化程序块的末尾
var myviewmodel=new viewmodelPDF()
{
lsusermaster=q.ToList()
};
即使没有更多属性,使用 ,
也能工作...它 "looks" 不好,但是如果您需要它们,添加新属性会更容易...如果代码是最终的,我不会使用它,但这是个人喜好
试试这个:
var myviewmodel=new viewmodelPDF()
{
lsusermaster=q.ToList()
};