2010-05-30 15 views
6

से तत्व को कैसे निकालें IQueryable के माध्यम से आप कैसे लूप करते हैं और कुछ तत्वों को हटाते हैं जिन्हें मुझे आवश्यकता नहीं है।LINQ: IQueryable <T>

मैं इस

var items = MyDataContext.Items.Where(x => x.Container.ID == myContainerId); 
foreach(Item item in items) 
{ 
    if(IsNotWhatINeed(item)) 
    items.Remove(item); 
} 

की तरह कुछ के लिए देख रहा हूँ क्या यह संभव है? अग्रिम

उत्तर

10

धन्यवाद आपको लगता है कि क्वेरी करने के लिए इस

var filtered = items.Where(itm => IsWhatINeed(itm)); 

में के रूप में आगे यह भी एक सकारात्मक के बजाय एक नकारात्मक करने के लिए बूलियन समारोह में सूक्ष्म परिवर्तन की सूचना सक्षम होना चाहिए। वह (नकारात्मक) not ऑपरेटर के लिए है।

+2

ऐसे आशावादी और सकारात्मक कार्य के साथ, आप 'आइटम भी लिख सकते हैं। जहां (IsWhatINeed) '। – Kobi

+0

धन्यवाद एंथनी और कोबी – Aximili

+1

एक फ़ंक्शन का सकारात्मक संस्करण भी डबल नकारात्मक परिदृश्य को समाप्त करता है: '! IsNotWhatINeed()' –

9
items = items.Where(x => !IsNotWhatINeed(x)); 
+0

मैं इसे LINQ में जोड़ना चाहता हूं, जैसा कि सभी कार्यात्मक कोड के साथ है, इसमें परिवर्तन करने के बजाय फ़िल्टर को लागू करके पुराने लोगों से एक नई सूची प्राप्त करना अधिक बेहतर है। – chakrit

3
var items = MyDataContext.Items.Where(x => x.Container.ID == myContainerId 
    && !IsNotWhatINeed(x)); 

या

var items = MyDataContext.Items.Where(x => x.Container.ID == myContainerId) 
    .Where(x=> !IsNotWhatINeed(x)); 
1

इस प्रयास करें:

var items = YourDataContext.Items.Where(x => x.Container.ID == myContainerId 
    && !IsNotWhatYouNeed(x)); 
2

अन्य उत्तर में सही कर रहे हैं तो आप एक ऐसा 'जहां' बयान के साथ क्वेरी को परिशोधित कर सकते हैं। हालांकि, मुझे लगता है कि आपकी क्वेरी एक Linq2Sql क्वेरी है। तो क्या आप वाकई इस मेमोरी में डेटा होने से पहले एक कस्टम समारोह के साथ छानने है बनाने की जरूरत है:

var items = MyDataContext.Items.Where(x => x.Container.ID == myContainerId) 
    .ToList(); // fetch the data in memory 

var itemsToRemove = items.Where(IsNotWhatINeed); 

तुम सच में IQueryable का विस्तार करना चाहते हैं, तो 'IsNotWhatINeed' समारोह कुछ है कि Linq2Sql समझता में अनुवाद किया जाना चाहिए ।

+0

धन्यवाद जेरोहेन, क्या आप मुझे एक उदाहरण दे सकते हैं या मुझे एक उदाहरण दे सकते हैं जो Linq2Sql क्वेरी है और क्या Linq2sql कृपया समझता है? धन्यवाद! – Aximili

संबंधित मुद्दे