: isimler bu kod daha iyi bir fikir olduğunu yazdı
bu adla ActiveItems içindedir
var activeNames = new HashSet<string>(activeItems.Select(x => x.Name));
var itemsWithActiveNames = items.Where(x => activeNames.Contains(x.Name))
.ToList();
Diğer bir seçenek, birleştirme, örneğin kullanmaktır: o ActiveItems
isimleri ve kullanan Aynı ada sahip birden ActiveItem
değerleri varsa bu yinelenen item
değerleri vereceğini
var query = from activeItem in activeItems
join item in items on activeItem.Name equals item.Name
select item;
Not: Bir sorgu ifadesi ile. Başka bir alternatif bu sorunu yok ki, katılmak ama biraz sakar geçerli: bunların hepsi adları denetlemek O (N * M) önlemek olacaktır
var query = from item in items
join activeItem in activeItems
on item.Name equals activeItem.Name
into g
where g.Any()
select item;
Not - onlar olacak tüm kullanım hash tabloları arkasında O (N + M) karmaşıklığı vermek için sahneler.
Hayır Senin için ilk cevap en iyi teşekkür olduğunu düşünüyorum başka bir koleksiyondan –
gelen özelliklerini istemediğiniz bir sürü 1 –
olacak çözümler 2 ve 3 HashSets'i "activeNames" olmaksızın dahili olarak kullanmak? – Magnus