SORU
9 EKİM 2012, Salı


İki Liste karşılaştırmak için bir yol< hızlı;>

Ne en hızlı (ve en az kaynak yoğun) iki büyük moleküldür (>50.000 maddeler) ve sonuç olarak olanlar gibi iki liste aşağıda:

  1. göstermek eşyalar ikinci listede ilk sırada değil
  2. ilk olarak ikinci listede ama ortaya Bu öğe

Şu anda Liste veya İReadOnlyCollection ile çalışan ve seri bir sorguda bu sorunu çözmeye çalışıyorum:

var list1 = list.Where(i => !list2.Contains(i)).ToList();
var list2 = list2.Where(i => !list.Contains(i)).ToList();

Ama bu istediğim kadar iyi yapmaz. Daha hızlı ve daha az kaynak bu listeler bir sürü işlem gerekiyor gibi yoğun bir hale ... bir fikriniz var mı?

CEVAP
9 EKİM 2012, Salı


Except kullanın:

var firstNotSecond = list1.Except(list2).ToList();
var secondNotFirst = list2.Except(list1).ToList();

Aslında bu daha çok az daha hızlı olurdu yaklaşım vardır sanıyorum, ama bu bile olacakkesinlikle(*M N) yaklaşım daha hızlı.

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Murray Winiata

    Murray Winia

    2 ŞUBAT 2009
  • njhaley

    njhaley

    24 NİSAN 2006
  • Virtual Riot

    Virtual Riot

    19 Mayıs 2011