Tôi đang tìm hiểu thêm một chút về LINQ và sử dụng nó nhiều hơn một chút, do đó, một chút công việc phát triển tự đi đây ...Object với LINQ
tôi có một đối tượng như sau:
public class Player(){
public string Name{get;set;}
public Club currentClub{get;set;}
public IEnumerable<Club> previousClubs{get;set;}
}
Bây giờ, với danh sách người chơi, tôi muốn chọn những người đã từng chơi cho các câu lạc bộ được chọn khác nhau, tôi có thể làm điều đó dễ dàng bằng một vài câu lệnh foreach - nhưng tôi muốn làm điều đó với Linq ...
Tôi đã thử điều này, nhưng không có gì được trả về từ nó:
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
}
Bất kỳ trợ giúp nào ở nơi tôi gặp sự cố? Các dữ liệu chắc chắn tồn tại bởi vì khi tôi có vòng lặp foreach vòng qua các câu lạc bộ bên trong một vòng lặp qua các cầu thủ và tôi trở lại một bộ sưu tập của tất cả các cầu thủ đã chơi cho các câu lạc bộ 1,2 & 3 có dữ liệu ...
Hiệu quả nó sẽ trả về một số trường hợp của đối tượng HistoryOfPlayer, tất cả đều chứa tên của 3 câu lạc bộ giống nhau (như chúng được liên kết trên ID) - như tôi đã nói, một chút tự học, vì vậy hãy thử áp dụng nó vào thể thao nó dính vào đầu tôi một chút !!
Ai đó có thể giúp bạn không?
Bạn nên liên kết với 'Tham gia' không phải là' Where' trong LINQ-To-Objects vì lý do hiệu suất: http://stackoverflow.com/questions/5551264/why-is-linq-join-so-much-faster -an-linking-with-where –