Bạn có nhiều cách để thực hiện việc này. Nó chủ yếu phụ thuộc vào dữ liệu bạn đang cố gắng để phù hợp.
- Điều đầu tiên bạn có thể làm là có một danh sách được sắp xếp
- sau đó nếu bạn biết giá trị giữa danh sách, bạn có thể lặp qua danh sách của bạn từ đầu từ cuối
- nhưng chủ yếu chỉ trả lại của bạn giá trị vì bạn đã tìm thấy nó
cũng là 2 điểm đầu tiên sẽ chỉ hoạt động nếu danh sách của bạn có giá trị số mà bạn có thể dựa vào để xác định mục.
Việc tối ưu hóa đầu tiên bạn có thể làm là:
Foreach (var item1 in List1)
{
Foreach (var item2 in List2)
{
if(item2 == item1) return item1;
}
}
Nếu bạn thực sự cần thói quen này là rất nhanh chóng, bạn sẽ phải làm việc tối ưu dựa trên các dữ liệu đó là trong danh sách của bạn.
Ngoài ra nếu dữ liệu của bạn là string
trong cả hai danh sách, bạn có thể tạo mã băm cho mỗi chuỗi (string.GetHashCode
) và sau đó dựa vào mã số để sắp xếp và tìm kiếm trong danh sách của bạn.
Có rất nhiều cách khác, nhưng tất cả phụ thuộc vào:
- số lượng dữ liệu bạn có trong danh sách của bạn (nếu bạn chỉ có 100 yếu tố bạn sẽ không thấy nhiều lợi ích hiệu năng)
- nếu danh sách của bạn là tĩnh hoặc động
- mức độ thường xuyên họ có thể thay đổi nếu họ năng động
- bao lâu thì bạn thực hiện một tìm kiếm trong các danh sách này
- ...
tôi sẽ kiểm tra nếu nó hoạt động – Bernardmoes
@Habib, là nó nhanh hơn hoặc ngắn gọn? tôi có nghĩa là nó làm nội bộ làm cùng một lopping? – tariq
@tariq, có nó không looping nội bộ, tôi không chắc chắn nếu nó s nhanh hơn, đó là lý do tại sao tôi cung cấp các tùy chọn khác với mã sửa đổi từ câu hỏi. – Habib