Tôi có hai trường hợp loại IEnumerable
như sau.Lấy một giao điểm của hai IEnumerables bằng LINQ
IEnumerable<Type1> type1 = ...;
IEnumerable<Type2> type2 = ...;
Cả Type1
và Type2
chứa một thành viên gọi là common
, vì vậy mặc dù họ là các lớp khác nhau, chúng tôi vẫn có thể liên hệ chúng như thế này.
type1[0].common == type2[4].common
Tôi đang cố gắng để lọc bỏ những yếu tố của type1
rằng không có common
giá trị tương ứng trong type2
và tạo một từ điển dựa trên một giá trị từ mỗi. Ngay bây giờ, tôi làm điều đó bằng vòng lặp đôi sau đây.
Dictionary<String, String> intersection = ...;
foreach (Type1 t1 in type1)
foreach(Type2 t2 in type2)
if (t1.common == t2.common)
intersection.Add(t1.Id, t2.Value);
Bây giờ, tôi đã thử với LINQ nhưng tất cả các .Where
, .Select
và .ForEach
chỉ cho tôi đau đầu. Có cách nào để gọn gàng thực hiện các hoạt động tương tự bằng cách sử dụng LINQ?
LINQ sẽ chỉ liệt kê mọi thứ. Bạn có vấn đề về hiệu suất không? – Paparazzi
Không. Nhưng những người lập trình khác đang cười với tôi. :(Họ nói rằng tôi mệt mỏi để tìm mã và điều đó là không thể. Trong khi tôi có thể thừa nhận điều đầu tiên, tôi từ chối đồng ý với điều sau. :) –
Vậy điều gì sẽ xảy ra khi bạn có một t1 có * hai * t2s trận đấu đó? –