Ora vengo in una fase per ottenere tutti i miei dati come un elenco in cache (oggetti) e la prossima cosa che devo fare è rimuovere alcune istanze dall'elenco.Rimuovere le istanze da un elenco utilizzando LINQ o Lambda?
Normalmente, avrei fatto rimuovendo in questo modo:
List<T> list;
List<T2> toBeRemovedItems;
// populate two lists
foreach(T2 item in toBeRemovedItems)
{
list.Remove(delegate(T one) {
// build a condition based on item
// return true or false
});
}
Per essere più precisi, in realtà ho costruire o compilare l'elenco toBeRemvoedItems di una classe dinamica (non una classe definita formale). Ad esempio, la classe T è qualcosa come MyClass e codici per la rimozione sono:
class MyClass<C> {
public string Value1 { get; set; }
public int Value2 { get; set; }
public C ObjectC { get; set; }
}
....
List<MyClass<C>> list;
// populate list
// populate toBeRemovedItems. Here is an example of hard-coded codes:
var toBeRemovedLItems = new[] {
new { Value1="a", Value2 = 1},
new { Value2="x", Value2 = 10},
...
};
// toBeRemovedItems may be the result of Select from a collection
foreach(var item in toBeRemovedLItems)
{
list.Remove(delegate(MyClass one) {
return one.Value1 = item.Value1 && one.Value2 < item.Value2;
});
}
Ho provato a cercare Remove()
metodo IEnumerable
interfaccia da MSDN, ma non riesco a trovare il metodo di Remove()
lì (è logico che IEnumerable
viene utilizzato solo per l'enumerazione). Nella classe List, esistono diversi metodi sovraccarichi Remove(...)
. Non sono sicuro se esistono metodi alternativi per rimuovere elementi da un elenco utilizzando le espressioni LINQ o Lambda?
A proposito, ho pensato a un modo per eseguire una query su un elenco per ottenere un sottoinsieme o un nuovo elenco IEnumerable
con condizioni Where, simili agli elementi in movimento da un elenco. Tuttavia, preferisco rimuovere elementi dalla mia lista memorizzata, e in alcuni casi non riesco a resettare la proprietà della lista in una classe in un nuovo elenco (set privato ad esempio).
Sembra un ubriacone. Beh, in pratica hai menzionato tutti i possibili metodi nel post stesso ... http://stackoverflow.com/questions/1120336/questo-è-il-modo più facile-diritto-di-profondare-a-listt-removing-unwanted -oggetti –