2014-02-05 56 views
0

我試圖在查詢執行後爲「trades.Price_5s」字段賦值。下面的代碼:WPF C#LINQ:爲檢索到的查詢中的字段分配不同的值

var TradeStatsQuery = (from trades in connection.TradeStatsDatas 
           where (trades.Price_5s == null) || (trades.Price_10s == null) 
           || (trades.Price_30s == null) || (trades.Price_60s == null) 
           || (trades.Price_5min == null) || (trades.Price_15min == null) 
           || (trades.Price_30min == null) || (trades.Price_60min == null) 
           select new 
           { 
            trades.TradeID, 
            trades.CurrencyPair, 
            trades.Action, 
            trades.ExecutedDateTime, 
            trades.Price_5s, 
            trades.Price_10s, 
            trades.Price_30s, 
            trades.Price_60s, 
            trades.Price_5min, 
            trades.Price_15min, 
            trades.Price_30min, 
            trades.Price_60min 
           }); 


     if(TradeStatsQuery.Count() > 0) 
     { 
      foreach(var id in TradeStatsQuery) 
      { 
       if(id.Price_5s == null) 
       { 
        Console.WriteLine("-----------------------------------------"); 
        Console.WriteLine("Trade ID: " + id.TradeID); 

        DateTime ET_plus5s = id.ExecutedDateTime.AddSeconds(5); 

        if(DateTime.Now >= ET_plus5s) 
        { 
         decimal retrieved_5sPrice; 
         Console.WriteLine("Fetching 5 second past trade price..."); 
         retrieved_5sPrice = tb_connection.GetCurrencyRate(id.CurrencyPair, id.Action, ET_plus5s); 
         Console.WriteLine("Price 5 sec: " + retrieved_5sPrice); 
         id.Price_5s = retrieved_5sPrice; 

我試圖指派我檢索到當前設定在零查詢領域的價格,所以我可以在以後回去重寫我與他們更新查詢的所有領域值。這可能嗎?我可以爲我以前查詢的字段賦予不同的值嗎?最後一行是錯誤發生的地方。

錯誤消息:「屬性或索引‘AnonymousType#1.Price_5s’不能被分配到 - 它是隻讀」

+0

你試過了嗎?如果是的話會發生什麼? –

+2

你也不需要'(TradeStatsQuery.Count()> 0)'。因爲如果沒有返回,收集將是空的,所以'foreach'無論如何不會做任何事情。 –

+0

是的,我得到的錯誤說以下「屬性或索引器'AnonymousType#1.Price_5s'不能被分配給 - 它是隻讀的」所以我猜這意味着我不能改變它正確的大聲笑沒有任何可用的解決方法? @Peter M – kknaguib

回答

1

在你的LINQ查詢要創建匿名類型與new

根據MS Anonymous Types (C# Programming Guide),這些是隻讀的。因此你不能改變它們的值。

+0

好的,那麼如何使用其他方法解決此問題。所以我在一段時間過去之後檢索市場價格,最後我想將它加載到我的數據庫中,只更改空值的字段。 @Peter M – kknaguib

+0

而不是'select new {}'創建一個具有這些屬性的類,然後嘗試類似於'select new MyContainer {}' – MattC

+0

我可以在1099的基礎上以相當的$$速率進行諮詢: D,但如果沒有,這聽起來像你必須做一些事情,比如建立一個失敗5s標準的股票列表,然後爲他們重新運行linq查詢。 –