linq-to-sql - विधि वाक्यविन्यास के साथ linq में sql में शामिल होने के लिए कैसे करें?




2 Answers

var result = from sc in enumerableOfSomeClass
             join soc in enumerableOfSomeOtherClass
             on sc.Property1 equals soc.Property2
             select new { SomeClass = sc, SomeOtherClass = soc };

इसके बराबर होगा:

var result = enumerableOfSomeClass
    .Join(enumerableOfSomeOtherClass,
          sc => sc.Property1,
          soc => soc.Property2,
          (sc, soc) => new
                       {
                           SomeClass = sc,
                           SomeOtherClass = soc
                       });

जैसा कि आप देख सकते हैं, जब जुड़ने की बात आती है, तो क्वेरी सिंटैक्स आम तौर पर लैम्ब्डा सिंटैक्स से अधिक पठनीय होता है।

मैंने क्वेरीक वाक्यविन्यास में शामिल होने के तरीके पर LINQ से SQL उदाहरणों में कई उदाहरण देखे हैं, लेकिन मुझे आश्चर्य है कि विधि सिंटैक्स के साथ इसे कैसे किया जाए? उदाहरण के लिए मैं निम्नलिखित कैसे कर सकता हूं

var result = from sc in enumerableOfSomeClass
             join soc in enumerableOfSomeOtherClass
             on sc.Property1 equals soc.Property2
             select new { SomeClass = sc, SomeOtherClass = soc }

एक। .Join() ? क्या कोई एक और सरल उदाहरण दिखा सकता है या प्रदान कर सकता है?




यहां अन्य उत्तरों को जोड़ने के लिए, यदि आप किसी तीसरे अलग प्रकार का एक नया ऑब्जेक्ट बनाना चाहते हैं, जहां क्लॉज (उदाहरण के लिए एक जो आपकी इकाई फ्रेमवर्क ऑब्जेक्ट नहीं है) तो आप यह कर सकते हैं:

public IEnumerable<ThirdNonEntityClass> demoMethod(IEnumerable<int> property1Values)
{
    using(var entityFrameworkObjectContext = new EntityFrameworkObjectContext )
    {
        var result = entityFrameworkObjectContext.SomeClass
            .Join(entityFrameworkObjectContext.SomeOtherClass,
                sc => sc.property1,
                soc => soc.property2,
                (sc, soc) => new {sc, soc})
            .Where(s => propertyValues.Any(pvals => pvals == es.sc.property1)
            .Select(s => new ThirdNonEntityClass 
            {
                dataValue1 = s.sc.dataValueA,
                dataValue2 = s.soc.dataValueB
            })
            .ToList();
    }

    return result;

}    

कहां और चयन खंडों में बनाई गई मध्यवर्ती वस्तु पर विशेष ध्यान दें।

ध्यान दें कि यहां हम किसी भी शामिल ऑब्जेक्ट की भी तलाश करते हैं जिसमें एक संपत्ति 1 है जो इनपुट सूची में से किसी एक से मेल खाता है।

मुझे पता है कि मूल पूछताछ करने वाले की तुलना में यह थोड़ा अधिक जटिल है, लेकिन उम्मीद है कि यह किसी की मदद करेगा।




Related