2017-06-03 60 views
0

我是指是否有可能訪問另一個屬性在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個不需要的查詢?

回答

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); 
+0

我應該這樣做在select語句呢? – User987

+0

不是,只是刪除銷售成員並將其替換爲該方法。 –

+0

啊好吧,但我要如何填寫我在數據庫中的每個項目的Transactions集合?這是混淆我的部分......因爲我的ViewModel類中沒有Transactions集合?附:每個項目都有一組不同的交易...所以我想我做的方式是必需的? – User987