मैं एक अच्छी सरल LINQ क्वेरी ढूंढ रहा हूं जो संग्रह के संग्रह में एक आइटम प्राप्त कर सकता है। निम्नलिखित मॉडल पर विचार करें ...LINQ: एक ऑब्जेक्ट के लिए संग्रह के भीतर संग्रह को खोजना
class Customer
{
List<Order> Orders;
int ID;
}
class Order
{
int ID;
}
चलें कहते हैं कि मैं प्रकार ग्राहक की एक सूची है ...
List<Customer> Customers;
क्या मैं चाहता हूँ एक एकल आदेश की आईडी पर आधारित है ऑर्डर (यह मेरा ज्ञात इनपुट डेटा है)। मैं भी मान सकते हैं कि एक आदेश एक ग्राहक के लिए अद्वितीय है (इसलिए केवल आईडी मैं सभी ग्राहकों को भर रहा हूँ के साथ एक आदेश हो जाएगा)
वहाँ एक अच्छा LINQ क्वेरी मैं आदेश प्राप्त करने के लिए उपयोग कर सकते हैं है मैं खोज रहा हूँ?
मुझे पता है कि मैं ऑर्डर की एक सूची में आसानी से ऐसा कर सकता हूं, लेकिन यह सेट अप है जिसके साथ मुझे काम करना है। मैं अधिक डेटा के लिए पूछताछ नहीं करना चाहता, एफएफ मेरे पास पहले से ही मेमोरी में पर्याप्त है जो मुझे चाहिए।
मैं लूप के लिए सेमी-मैसी के साथ ऐसा कर सकता हूं। शायद मुझे यह करना चाहिए? शायद मैं कोड को बहुत सरल बनाने की कोशिश कर रहा हूं? ,
var matchingOrders = from customer in customers
from order in customer.Orders
where order.ID == orderID
select order;
var order = matchingOrders.Single();
इस उत्तर के पिछले संस्करण में के रूप में ध्यान दें कि यदि ऐसी कोई मैचों या एक से अधिक कर रहे हैं कि इस असफल हो जायेगी:
यह मेरे सवाल का जवाब नहीं है। मुझे ऑर्डर आइटम चाहिए ग्राहक नहीं। इतना बुरा है कि आप मेरे प्रश्न को सही तरीके से नहीं पढ़ रहे हैं, लेकिन 4 अप-मतदाता इसे भी नहीं पढ़ रहे हैं? अच्छा दिन नहीं – musefan
@ संग्रहालय: ओह, मिस्रेड - अब एक नज़र डालें। –
अच्छी वसूली;) 'SelectMany' जो मैं खोज रहा था, वह अस्तित्व में नहीं था। मुझे काम करने के लिए एक समेकित संग्रह देता है इसलिए मुझे यह पसंद है। क्वेरी अभिव्यक्तियों का प्रशंसक नहीं - मुझे कोड-वाई पर्याप्त नहीं लगता है – musefan