在我的MVC Web应用程序中,我有来自数据库的记录的linq查询,我想使用viewmodel在视图上显示该记录。我试过以下代码。
let verticalSpace = NSLayoutConstraint(item: image,
attribute: .Top,
relatedBy: .Equal,
toItem: self.topLayoutGuide,
attribute: .Bottom,
multiplier: 1, constant: 0)
我还创建了viemodel来管理所有模型以便在视图上显示(这里只是一个模型访问代码)。
[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);
}
我的模型类,我将从数据库中获取记录。
public class viewmodelPDF
{
public List<User_Master> lsusermaster { get; set; }
}
现在我的问题是,在我的动作代码中,当我尝试将查询结果分配给viewmodel的 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
时,它会给出编译器错误,如下所示。
我不知道,为什么会抛出这个编译错误,如何将查询结果分配给viemodel属性?
答案 0 :(得分:2)
在C#中使用对象初始值设定项时,不能在属性之间使用;
,而是在初始化程序的末尾使用它
所以只需删除;
(或按照建议使用,
),然后将其移至初始化程序块的末尾
var myviewmodel=new viewmodelPDF()
{
lsusermaster=q.ToList()
};
即使没有更多属性,使用,
也可以工作......它“看起来”不好,但是如果你需要它们会更容易添加新属性...如果代码是最终的,我不要使用它,但这是个人偏好
答案 1 :(得分:2)
试试这个:
library(data.table)
dt <- as.data.table(df)
#a table to join with
dt2 <- dt[, list(id = aggregate_with, a, b, aggregate_order)]
#set the right order
dt2[, c('a', 'b') := list(ifelse(aggregate_order == 'a,b', a, b), ifelse(aggregate_order == 'a,b', b, a))]
setkey(dt2, id)
#joining tables
res <- dt2[dt]
#replacing NA's with 0 and summing
for (j in c('a', 'b')) set(res, which(is.na(res[[j]])), j, 0)
res[!aggregate_with %in% id, list(a = sum(a) + i.a[1], b = sum(b) + i.b[1]), by = id]