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

  • Droid Life

    Droid Life

    17 Kasım 2009
  • NightShader1

    NightShader1

    25 Temmuz 2006
  • The Computer Chronicles

    The Computer

    7 Kasım 2012