Проблема в формировании запроса LINQ - PullRequest
0 голосов
/ 21 мая 2010

Я написал

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>();

Получение ошибки: int не содержит определения для id

в чем проблема, которую я создал?

Спасибо

Ответы [ 3 ]

2 голосов
/ 21 мая 2010

Попробуйте это:

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>.

1 голос
/ 21 мая 2010

Проблема с: select new int {} part.

Попробуйте просто сделать:

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>();

select new {} синтаксис предназначен для определения анонимных типов (где использование ограничено той же областью действия функции).

Эндрю.

1 голос
/ 21 мая 2010

Ваш код пытается создать экземпляр int, устанавливая свойство id, которое не существует. Я думаю, что вам нужно следующее.

Uids = (from returnResultSet in ds.ToList()
                     from portfolioReturn in returnResultSet.Portfolios
                     from baseRecord in portfolioReturn.ChildData
                     select baseRecord.Id).ToList<int>();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...