C#LINQ访问LINQ SELECT语句中另一个属性(方法)

问题描述:

我是指是否有可能访问另一个属性在LINQ,以设置另一个属性在LINQ值一个问题:C#LINQ访问LINQ SELECT语句中另一个属性(方法)

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= 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语句中的另一属性与先前属性的值?在我的情况下,它是Transactions集合?

这是可行的,如果是的话,如何?

P.S.我试图找出这是否可行,因为如果我可以使用此前设置的属性值,那么我会避免在数据库中的事务表执行2个不需要的查询?

您不能使用以前的值,因为您不想为每个项目调用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); 
+0

我应该这样做在select语句呢? – User987

+0

不是,只是删除销售成员并将其替换为该方法。 –

+0

啊好吧,但我要如何填写我在数据库中的每个项目的Transactions集合?这是混淆我的部分......因为我的ViewModel类中没有Transactions集合?附:每个项目都有一组不同的交易...所以我想我做的方式是必需的? – User987