在 MVC 视图模型中执行计算
Perform a calculation in MVC viewmodel
正在尝试在视图模型中执行计算。我有两个捐赠列,想在视图模型中将它们加在一起。
这是在 ViewModel 中 Class:
[DataType(DataType.Currency)]
public decimal ttlDonation
{
get { return Donation.GetValueOrDefault() + GuestDonation.GetValueOrDefault(); }
}
Viewmodel 构建良好,并且使用 (modelItem => item.ttlDonation)
在 razor 视图中正确显示。问题是当我尝试在控制器中使用 LINQ 查询对这个表达式求和时,如下所示:
var DonateTTl = GuestViewModel.Sum(f => f.ttlDonation);
然后我的代码抛出一个错误:
The specified type member 'ttlDonation' is not supported in LINQ to Entities...
我想知道执行此操作的最佳方法。我也在我的控制器(如下)中尝试了这个,我在那里将我的视图模型稍微更改为基本获取;放;它仍然无法正常工作。做这个的最好方式是什么?我应该在我的原始模型而不是我的视图模型上执行计算吗?
var GuestViewModel = guests.Select(g => new GuestIndexViewData
{
ID = g.ID,
FRID = g.FRID,
FirstName = g.FirstName,
LastName = g.LastName,
Company = g.Company,
email = g.email,
Donation = g.Donation,
GuestFirstName = g.GuestFirstName,
GuestLastName = g.GuestLastName,
GuestCompany = g.GuestCompany,
Guestemail = g.Guestemail,
GuestDonation = g.Donation,
Attended = g.Attended,
RSVP = g.RSVP,
Guest3 = g.Guest3,
ttlDonation = (g.GuestDonation.GetValueOrDefault() + g.Donation.GetValueOrDefault())
}).OrderBy(f => f.FRID);
var DonateTTl = GuestViewModel.Sum(f => f.ttlDonation);
我知道我可以找到一种方法来做到这一点,但我正在寻找最好的方法来做到这一点 standards/performance。
我觉得挑出来会行:
var DonateTTl = GuestViewModel.Select(vm => vm.ttlDonation).Sum();
正在尝试在视图模型中执行计算。我有两个捐赠列,想在视图模型中将它们加在一起。
这是在 ViewModel 中 Class:
[DataType(DataType.Currency)]
public decimal ttlDonation
{
get { return Donation.GetValueOrDefault() + GuestDonation.GetValueOrDefault(); }
}
Viewmodel 构建良好,并且使用 (modelItem => item.ttlDonation)
在 razor 视图中正确显示。问题是当我尝试在控制器中使用 LINQ 查询对这个表达式求和时,如下所示:
var DonateTTl = GuestViewModel.Sum(f => f.ttlDonation);
然后我的代码抛出一个错误:
The specified type member 'ttlDonation' is not supported in LINQ to Entities...
我想知道执行此操作的最佳方法。我也在我的控制器(如下)中尝试了这个,我在那里将我的视图模型稍微更改为基本获取;放;它仍然无法正常工作。做这个的最好方式是什么?我应该在我的原始模型而不是我的视图模型上执行计算吗?
var GuestViewModel = guests.Select(g => new GuestIndexViewData
{
ID = g.ID,
FRID = g.FRID,
FirstName = g.FirstName,
LastName = g.LastName,
Company = g.Company,
email = g.email,
Donation = g.Donation,
GuestFirstName = g.GuestFirstName,
GuestLastName = g.GuestLastName,
GuestCompany = g.GuestCompany,
Guestemail = g.Guestemail,
GuestDonation = g.Donation,
Attended = g.Attended,
RSVP = g.RSVP,
Guest3 = g.Guest3,
ttlDonation = (g.GuestDonation.GetValueOrDefault() + g.Donation.GetValueOrDefault())
}).OrderBy(f => f.FRID);
var DonateTTl = GuestViewModel.Sum(f => f.ttlDonation);
我知道我可以找到一种方法来做到这一点,但我正在寻找最好的方法来做到这一点 standards/performance。
我觉得挑出来会行:
var DonateTTl = GuestViewModel.Select(vm => vm.ttlDonation).Sum();