यहाँ मुद्दा है:अनुकरण क्रॉस संदर्भ में शामिल - LINQ/सी #
2 डेटा संदर्भों है कि मैं एक के आधार पर संयोजन करना चाहते हैं की है। अब मुझे पता है कि LINQ एक संदर्भ से दूसरे संदर्भ में शामिल होने की इजाजत नहीं देता है, और मुझे पता है कि 2 संभावित समाधान या तो एक डेटाैकेंटेक्स्ट बनाने या 2 अलग-अलग प्रश्न पूछने के लिए होंगे (जो मैं अभी के लिए कर रहा हूं)। हालांकि मैं जो करना चाहता हूं वह है "अनुकरण" करना।
यहां मैंने जो कोशिश की है।
using (var _baseDataContext = Instance)
{
var query = from a in _baseDataContext.Account.ACCOUNTs
where a.STR_ACCOUNT_NUMBER.ToString() == accountID
join app in _baseDataContext.Account.APPLICATIONs on a.GUID_ACCOUNT_ID equals
app.GUID_ACCOUNT
join l in GetLoans() on app.GUID_APPLICATION equals l.GUID_APPLICATION
select l.GUID_LOAN;
return query.Count() > 0 ? query.First() : Guid.Empty;
}
private static IQueryable<LOAN> GetLoans()
{
using (var _baseDataContext = Instance)
{
return (from l in _baseDataContext.Loan.LOANs
select l).AsQueryable();
}
}
रन टाइम मैं में
System.InvalidOperationException है:
कार्य समाधान::
using (var _baseDataContext = Instance)
{
var query = from a in _baseDataContext.Account.ACCOUNTs
where a.STR_ACCOUNT_NUMBER.ToString() == accountID
join app in _baseDataContext.Account.APPLICATIONs on a.GUID_ACCOUNT_ID equals
app.GUID_ACCOUNT
join l in GetLoans() on app.GUID_APPLICATION equals l.GUID_APPLICATION
select l.GUID_LOAN;
return (query.Count() > 0) ? query.First() : Guid.Empty;
}
private static IEnumerable<LOAN> GetLoans()
{
using (var _baseDataContext = Instance)
{
return (from l in _baseDataContext.Loan.LOANs
select l).AsQueryable();
}
}
क्वेरी एक अलग डेटा संदर्भ
संपादित करें पर परिभाषित आइटम के संदर्भ हैं
मैंने पहले आईन्यूमेरेबल लौटने की कोशिश की लेकिन अपेक्षित के रूप में एक कास्टिंग त्रुटि प्राप्त की। हालांकि मैंने एक IENuerable AsQueryable लौटने का विचार नहीं किया था। –
इस दृष्टिकोण के साथ एक संभावित समस्या यह है कि आप शुद्ध जुड़ाव नहीं कर रहे हैं, इसलिए यदि आपको ऋण संदर्भ में एक और शामिल करने की आवश्यकता है तो आप जो भी देख सकते हैं उससे सक्षम नहीं होंगे। –
ठीक है इसे बाहर काम किया। हम विधि में शामिल होने वाले खंड को हटा सकते हैं और विधि से चयन करने के बजाय बस एक शुद्ध जुड़ाव कर सकते हैं।यहां की चाल यह है कि विधि को एक आईनेमरेबल वापस करना होगा .अनुक्रम योग्य यह हमें क्रॉस संदर्भ में शामिल होने की अनुमति देता है, और इस प्रकार तक मुझे कोई प्रदर्शन हिट नहीं दिखाई दे रही है। –