Ahora vienen una etapa para obtener todos mis datos como una lista en la memoria caché (objetos) y mi siguiente que tengo que hacer es quitar algunos casos de la lista.¿Eliminar instancias de una lista utilizando LINQ o Lambda?
Normalmente, lo haría eliminando de esta manera:
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
});
}
Para ser más específicos, en realidad construir o rellenar la lista toBeRemvoedItems de una clase dinámica (no una clase definida formal). Por ejemplo, la clase T es algo así como MyClass y códigos para la eliminación son:
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;
});
}
Me trataron de buscar Remove()
método en el IEnumerable
interfaz de MSDN, pero no puedo encontrar el método de Remove()
allí (que tiene sentido que IEnumerable
se usa solo para la enumeración). En la clase List, hay varios métodos Remove(...)
sobrecargados. No estoy seguro de si hay alguna forma alternativa de eliminar elementos de una lista mediante el uso de expresiones LINQ o Lambda.
Por cierto, pensé en una forma de hacer una consulta en una lista para obtener un subconjunto o una nueva lista IEnumerable
con condiciones Where, similar a mover elementos de una lista. Sin embargo, prefiero eliminar elementos de mi lista en caché, y en algunos casos simplemente no puedo restablecer la propiedad de la lista en una clase a una nueva lista (por ejemplo, un conjunto privado).
Parece un idiota. Bueno, básicamente mencionaste todos los métodos posibles en la publicación en sí ... http://stackoverflow.com/questions/1120336/what-is-the-easiest-way-to-foreach-through-a-listt-removing-unwanted -objetos –