我有一个问题,它是否可以访问LINQ中的另一个属性,以便在LINQ中设置另一个属性的值:
var v = ctx.myTableItems
.Where(x => x.id== anotherid)
.Select(e => new MyViewModel
{
Title = e.Title,
CurrentPrice = e.CurrenctPrice.Value,
ItemID = e.ItemID.ToString(),
Transactions= e.Transactions,
Sales =
})
.Where(x=>x.Sales>0);
所以检查一下这些人,当我设置我的交易属性时,我在前一行中设置了交易集合,现在我想设置我的销售属性,其中包含在前一行中分配的Transactions属性:
Transactions= e.Transactions,
Sales = e.Transactions.Sum(x=>x.Quantity) // Normaly I'd do it like this
但我想尝试这样的事情:
Sales = Transactions.Sum(x=>x.Quantity) // is this doable ?
所以我的问题是,是否可以在select语句中使用以前的属性值设置另一个属性?在我的情况下它的交易集合?
这样做是否可行,如果是这样,怎么办?
P.S。我试图确定这是否可行,因为如果我可以使用此先前设置的属性的值,那么我会避免在DB中的Transactions表上执行2个不必要的查询?
答案 0 :(得分:1)
您不能使用之前的值,因为您不想为每个项目调用e.Transactions.Sum()。
只需向MyViewModel添加方法
即可public double GetSales()
{
return Transactions.Sum(x=>x.Quantity);
}
//at the end of your code use:
.Where(x=>x.GetSales()>0);