2009-02-02 11 views
11

के बाद से वहाँ डीबी 2 के लिए कोई Linq (चलो आईबीएम!) अभी तक है, और मैं IQueryables या मेरे कोड में IEnumerables के साथ सौदा करना चाहते हैं, मैं कैसे एक IQueryable के लिए एक DataTable में बदल सकते हैं? या एक आईनेमरेबल?IQueryable <T> में कनवर्ट डेटासेट या IEnumerable <T>

मैं के बाद से MSFT यह yanked एक अंतरफलक और एक वर्ग है कि datatable में स्तंभों से मेल खाता है ...

IQueryable<IMyData> GetAS400Data(..parameters..) 
{ 
    DataSet d = GetData(); 
    ... 
    //Some code to convert d to IQueryable<IMyData> 
} 

DataTable.Rows .AsQueryable का समर्थन नहीं करता है, तो मैं क्या करने के लिए सुनिश्चित नहीं कर रहा हूँ यहाँ करो

+0

.अनुक्रमिक() <= सिस्टम का उपयोग कर। डेटा; –

उत्तर

17
table.AsEnumerable()... 

table.AsEnumerable().AsQueryable()... 

लेकिन, आप अपने प्रकार के लिए अपने खुद का अनुवाद (Select) लिखने के लिए आवश्यकता होगी; और IQueryable<T> अभी भी LINQ-to-Objects का उपयोग कर रहे हैं; IQueryable<T>IEnumerable<T> से dynamic LINQ library के लिए शायद किसी अन्य कारण के लिए अभिव्यक्तियों का उपयोग करना होगा।

+0

आप दूसरी तरफ कैसे परिवर्तित करते हैं? IQueryable से डेटाटेबल तक? – MattSlay

+1

'IQueryable ' अनिवार्य रूप से डेटा पर एक दृश्य है। मूल 'डेटाटेबल' अभी भी बना हुआ है। * * डेटाटेबल 'बनाने के लिए, शायद इसे देखें: http://stackoverflow.com/questions/545328/datatable-to-generic-list-memory-leak –

+0

@MarcGravell अनुवाद को कैसे करें इस पर विस्तृत जानकारी दे सकता है? मैंने IQueryable परिणाम सूची = (डेटासेट टेबल्स [0]) की कोशिश की। AsEnumerable()। AsQueryable(); मुझे एक त्रुटि मिली: IQueryable टाइप करने के लिए IQueryable टाइप करने के लिए प्रकार परिवर्तित नहीं कर सकता। –

1

Take a look here ऐसा लगता है कि डीबी 2 के लिए इकाई ढांचे के साथ एक प्रदाता मौजूद है।

+0

दुर्भाग्यवश, पिछले साल एक बुरे अनुभव के कारण, ईएफ को मेरे लिए अस्वीकार कर दिया गया है। यह दुर्भाग्यपूर्ण है, क्योंकि ईएफ एमएसएफटी का भविष्य है ... – jlembke

1

आप इस तरह कुछ उपयोग कर सकते हैं।

DataSet ds = GetData(); 
DataTable dt= ds.Tables[0]; 
var query = 
    from row in dt.AsEnumerable() 
    select new IMyData() 
    { 
     property1= row[0], 
     property2= row[1] 
    }; 
संबंधित मुद्दे