【发布时间】:2012-04-30 21:12:07
【问题描述】:
我希望对 LINQ 有更多的了解并更多地使用它,所以在这里进行一些自我开发工作......
我有一个对象如下:
public class Player(){
public string Name{get;set;}
public Club currentClub{get;set;}
public IEnumerable<Club> previousClubs{get;set;}
}
现在,给定一个球员名单,我想选择以前曾为各种选定俱乐部效力的球员,我可以通过嵌套的几个 foreach 语句轻松完成 - 但我想用林克...
我试过了,但没有返回任何东西:
var prevClubs =
from player in players
from clubOriginal in player.previousClubs
from clubSecond in player.previousClubs
from clubThird in player.previousClubs
where clubOriginal.ID == 1
where clubSecond.ID == 2
where clubThird.ID == 3
select new HistoryOfPlayer{
firstClub == clubOriginal.Name,
secondClub == clubSecond.Name,
thirdClub == clubThird.Name
}
对我哪里出错有帮助吗?数据肯定存在,因为当我有一个循环遍历球员的循环内的俱乐部循环时,我返回了为俱乐部 1,2 和 3 效力过的所有球员的集合,有数据......
实际上它应该返回一个 HistoryOfPlayer 对象的几个实例,所有实例都包含相同 3 个俱乐部的名称(假设它们在 ID 上链接) - 正如我所说,它有点自学,所以尝试将它应用到运动,所以它有点卡在我的脑海里!!
有人可以帮忙吗?
【问题讨论】:
-
出于性能原因,您应该在 LINQ-To-Objects 中链接
Join而不是Where:stackoverflow.com/questions/5551264/…