से सूची प्राप्त करने मैं दो संग्रह हैं: एक आइटम है और एक अन्य है ActiveItemsLinq एक और सूची
इन दो संग्रह के बीच केवल चौराहे का नाम
है मैं आइटम जहां आइटम से Linq के साथ एक सूची चाहते हैं
Items.Where(i => ActiveItems.Count(v=> v.Name==i.Name) > 0)
से सूची प्राप्त करने मैं दो संग्रह हैं: एक आइटम है और एक अन्य है ActiveItemsLinq एक और सूची
इन दो संग्रह के बीच केवल चौराहे का नाम
है मैं आइटम जहां आइटम से Linq के साथ एक सूची चाहते हैं
Items.Where(i => ActiveItems.Count(v=> v.Name==i.Name) > 0)
मैं शायद का एक सेट बनाना होगा: नाम
मैं इस कोड लिखा था वहाँ एक बेहतर विचार है कि नाम के साथ ActiveItems में हैं ActiveItems
से नाम और फिर उपयोग करते हैं:
var activeNames = new HashSet<string>(activeItems.Select(x => x.Name));
var itemsWithActiveNames = items.Where(x => activeNames.Contains(x.Name))
.ToList();
एक अन्य विकल्प में शामिल होने, उदा उपयोग करने के लिए है
var query = from activeItem in activeItems
join item in items on activeItem.Name equals item.Name
select item;
ध्यान दें कि यह नकली item
मूल्यों अगर वहाँ एक ही नाम के साथ कई ActiveItem
मान हैं दे देंगे: एक प्रश्न अभिव्यक्ति के साथ। एक अन्य विकल्प में शामिल होने, जो इस समस्या नहीं है लेकिन थोड़ा clumsier है:
var query = from item in items
join activeItem in activeItems
on item.Name equals activeItem.Name
into g
where g.Any()
select item;
ध्यान दें कि इन सब हे (एन * एम) से बचने जाएगा नामों के लिए जाँच - पीछे वे हूँ सभी उपयोग हैश तालिकाओं ओ (एन + एम) जटिलता देने के लिए दृश्य।
Items.where(i => ActiveItems.Any(a => i.Name == a.Name))
var results = from i1 in collection1.Items
join i2 in collection2.ActiveItems on i1.Name equals i2.Name
select i2.Name;
का उपयोग करना एक में शामिल होने:
from item in Items
join active in ActiveItems on item.Name equals active.Name
select item
शामिल होना चाहिए ... आइटम पर। नाम सक्रिय है। नाम। अनुक्रम महत्वपूर्ण है – slfan
नहीं मैं नहीं चाहता कि गुण एक और संग्रह –
से चाहते हैं मुझे लगता है कि अपने पहले जवाब सबसे अच्छा धन्यवाद है एक बहुत +1 –
होगा समाधान 2 और 3 'सक्रिय नाम' के बिना आंतरिक रूप से हैशसेट का उपयोग करें? – Magnus