2010-05-21 25 views
0

我已經寫問題在LINQ查詢形成

List<int> Uids = new List<int>(); 

    Uids = (from returnResultSet in ds.ToList() 
          from portfolioReturn in returnResultSet.Portfolios 
          from baseRecord in portfolioReturn.ChildData 
          select new int 
          { 
           id = baseRecord.Id 
          }).ToList<int>(); 

四處錯誤:「詮釋」不包含「身份證」

什麼是我造成的問題的定義?

感謝

回答

2

試試這個:

List<int> Uids = (from returnResultSet in ds.ToList() 
        from portfolioReturn in returnResultSet.Portfolios 
        from baseRecord in portfolioReturn.ChildData 
        select baseRecord.Id).ToList<int>(); 

既然你希望得到一個整數列表,你可以簡單地從你的查詢項目的Id屬性,然後使用ToList擴展方法將它們緩衝到List<T>。作爲一個方面說明,你確定List<T>是適合在這裏使用的類型嗎?如果您將它們緩衝到List<T>中,您將放棄延遲執行的好處,並且無法傳輸這些ID。

1

你的代碼試圖實例化整數,設置一個不存在的id屬性。我認爲以下是你需要的。

Uids = (from returnResultSet in ds.ToList() 
        from portfolioReturn in returnResultSet.Portfolios 
        from baseRecord in portfolioReturn.ChildData 
        select baseRecord.Id).ToList<int>(); 
1

的問題是與:選擇新的INT {}一部分。

嘗試簡單地做:

List<int> Uids = new List<int>(); 

Uids = (from returnResultSet in ds.ToList() 
         from portfolioReturn in returnResultSet.Portfolios 
         from baseRecord in portfolioReturn.ChildData 
         select baseRecord.Id 
     ) 
     .ToList<int>(); 

選擇新的{}語法是用於定義匿名類型(其中,使用被限制在相同的函數作用域)。

Andrew。