2010-05-21 23 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。