हैलो मैं अपने प्रोजेक्ट के लिए MVC 5
और Entity Framework 6
का उपयोग कर रहा हूं। मैं निम्न चित्र में की तरह एक मॉडल है:सहसंबंधित इकाई द्वारा खोजें
और मैं Tag
वस्तुओं का एक सेट से शुरू करके इकाई उत्पाद क्वेरी करने के लिए की जरूरत है। कृपया ध्यान दें कि Tag
ऑब्जेक्ट एक सार श्रेणी है जो वास्तव में Table-Per-Entity
रणनीति विरासत का उपयोग कर मैप किया गया है।
मेरी समारोह विधि
public IEnumerable<Product> SerachByTag(IEnumerable<Tag> tagList);
tagList पैरामीटर में के हस्ताक्षर वास्तव में वहाँ Tag
कार्यान्वयन के ठोस उदाहरण हो जाएगा।
मैं यह प्रश्न कैसे बना सकता हूं?
उदाहरण के लिए मैं डेटा संरचना
[
{ tagType: 1, stringProperty: "abc" },
{ tagType: 2, intProperty: 9 }
]
और इतने पर निम्न इनपुट में प्राप्त कर सकते हैं। उत्पादों को फ़िल्टर करने का बेहतर तरीका कौन सा होगा? उदाहरण के लिए मैं निश्चित रूप से पहले हर एक मापदंड के लिए उत्पादों की एक सूची लागू हो सकते हैं और उसके बाद निम्न नमूना में की तरह इन परिणामों एक दूसरे को काटना:
var p1 = ctx.Tags
.OfType<FirstTagType>()
.Where(x => x.StringProperty.Equals("abc"))
.Select(x => x.Products);
var p2 = ctx.Tags
.OfType<SecondTagType>()
.Where(x => x.IntProperty == 9)
.Select(x => x.Products);
var results = p1.Intersect(p2);
लेकिन इस मामले में मेरे सवाल का प्रदर्शन के बारे में है। यह क्वेरी कई फ़िल्टरों के साथ कैसे व्यवहार करती है?
यदि आप उत्पाद के लिए क्वेरी कर रहे हैं (और टैग के ठोस प्रकार की परवाह नहीं करते हैं) तो आप केवल (सार) टैग dbset से पूछताछ करें। –
@AlexKrupka: आपके उत्तर के लिए धन्यवाद। दुर्भाग्य से मुझे ठोस प्रकार को ध्यान में रखना होगा – Lorenzo