4
How to filter a type list IEnumerable<>
passing a parameter of type IEnumerable<>
preferably via expression lambda
or linq
?
Based on the filter below I expect this result:
{MundoId = 0, ContinenteId = "AMERICA DO SUL", PaisId = "PERU", UFId = "LIMA" },
{MundoId = 0, ContinenteId = "AMERICA DO SUL", PaisId = "COLOMBIA", UFId = "BOGOTÁ" },
{MundoId = 0, ContinenteId = "AMERICA DO NORTE", PaisId = "EUA", UFId = "NOVA IORQUE" }
Action:
public ActionResult Index() {
var mundo = new List < Mundo > {
new Mundo {
MundoId = 0, ContinenteId = 1, PaisId = 2, UFId = 4
},
new Mundo {
MundoId = 0, ContinenteId = 1, PaisId = 3, UFId = 7
},
new Mundo {
MundoId = 0, ContinenteId = 2, PaisId = 4, UFId = 10
}
};
var _mundo = mundo.ToList();
IEnumerable < Mundo > _mundoFiltrado = FiltrarMundo(_mundo);
return View(_mundoFiltrado);
}
Filtrate Method:
public IEnumerable < Mundo > FiltrarMundo(IEnumerable < Mundo > pMundo) {#
region::lista Mundo::
var mundo = new List < Mundo > {
new Mundo {
MundoId = 1, ContinenteId = 1, PaisId = 1, UFId = 1
},
new Mundo {
MundoId = 2, ContinenteId = 1, PaisId = 1, UFId = 2
},
new Mundo {
MundoId = 3, ContinenteId = 1, PaisId = 1, UFId = 3
},
new Mundo {
MundoId = 4, ContinenteId = 1, PaisId = 2, UFId = 4
},
new Mundo {
MundoId = 5, ContinenteId = 1, PaisId = 2, UFId = 5
},
new Mundo {
MundoId = 6, ContinenteId = 1, PaisId = 2, UFId = 6
},
new Mundo {
MundoId = 7, ContinenteId = 1, PaisId = 3, UFId = 7
},
new Mundo {
MundoId = 8, ContinenteId = 1, PaisId = 3, UFId = 8
},
new Mundo {
MundoId = 9, ContinenteId = 1, PaisId = 3, UFId = 9
},
new Mundo {
MundoId = 10, ContinenteId = 2, PaisId = 4, UFId = 10
},
new Mundo {
MundoId = 11, ContinenteId = 2, PaisId = 4, UFId = 11
},
new Mundo {
MundoId = 12, ContinenteId = 2, PaisId = 4, UFId = 12
},
new Mundo {
MundoId = 13, ContinenteId = 2, PaisId = 5, UFId = 13
},
new Mundo {
MundoId = 14, ContinenteId = 2, PaisId = 5, UFId = 14
},
new Mundo {
MundoId = 15, ContinenteId = 2, PaisId = 5, UFId = 15
},
new Mundo {
MundoId = 16, ContinenteId = 2, PaisId = 6, UFId = 16
},
new Mundo {
MundoId = 17, ContinenteId = 2, PaisId = 6, UFId = 17
},
new Mundo {
MundoId = 18, ContinenteId = 2, PaisId = 6, UFId = 18
},
new Mundo {
MundoId = 19, ContinenteId = 3, PaisId = 7, UFId = 19
},
new Mundo {
MundoId = 20, ContinenteId = 3, PaisId = 7, UFId = 20
},
new Mundo {
MundoId = 21, ContinenteId = 3, PaisId = 7, UFId = 21
},
new Mundo {
MundoId = 22, ContinenteId = 3, PaisId = 8, UFId = 22
},
new Mundo {
MundoId = 23, ContinenteId = 3, PaisId = 8, UFId = 23
},
new Mundo {
MundoId = 24, ContinenteId = 3, PaisId = 8, UFId = 24
},
new Mundo {
MundoId = 25, ContinenteId = 3, PaisId = 9, UFId = 25
},
new Mundo {
MundoId = 26, ContinenteId = 3, PaisId = 9, UFId = 26
},
new Mundo {
MundoId = 27, ContinenteId = 3, PaisId = 9, UFId = 27
},
new Mundo {
MundoId = 28, ContinenteId = 4, PaisId = 10, UFId = 28
},
new Mundo {
MundoId = 29, ContinenteId = 4, PaisId = 10, UFId = 29
},
new Mundo {
MundoId = 30, ContinenteId = 4, PaisId = 10, UFId = 30
},
new Mundo {
MundoId = 31, ContinenteId = 4, PaisId = 11, UFId = 31
},
new Mundo {
MundoId = 32, ContinenteId = 4, PaisId = 11, UFId = 32
},
new Mundo {
MundoId = 33, ContinenteId = 4, PaisId = 11, UFId = 33
},
new Mundo {
MundoId = 34, ContinenteId = 4, PaisId = 12, UFId = 34
},
new Mundo {
MundoId = 35, ContinenteId = 4, PaisId = 12, UFId = 35
},
new Mundo {
MundoId = 36, ContinenteId = 4, PaisId = 12, UFId = 36
}
};#
endregion
# region::Lista Continente
var continente = new List < Continente > {
new Continente {
ContinenteId = 1, Nome = "AMERICA DO SUL"
},
new Continente {
ContinenteId = 2, Nome = "AMERICA DO NORTE"
},
new Continente {
ContinenteId = 3, Nome = "EUROPA"
}
};#
endregion
# region::Lista Pais::
var pais = new List < Pais > {
new Pais {
PaisId = 1, ContinenteId = 1, Nome = "BRASIL"
},
new Pais {
PaisId = 2, ContinenteId = 1, Nome = "PERU"
},
new Pais {
PaisId = 3, ContinenteId = 1, Nome = "COLOMBIA"
},
new Pais {
PaisId = 4, ContinenteId = 2, Nome = "EUA"
},
new Pais {
PaisId = 5, ContinenteId = 2, Nome = "CANADA"
},
new Pais {
PaisId = 6, ContinenteId = 2, Nome = "MÉXICO"
},
new Pais {
PaisId = 7, ContinenteId = 3, Nome = "FRANÇA"
},
new Pais {
PaisId = 8, ContinenteId = 3, Nome = "INGLATERRA"
},
new Pais {
PaisId = 9, ContinenteId = 3, Nome = "ITÁLIA"
}
};#
endregion
# region::Lista UF::
var uf = new List < UF > {
new UF {
UFId = 1, PaisId = 1, Nome = "UF 1"
},
new UF {
UFId = 2, PaisId = 1, Nome = "UF 2"
},
new UF {
UFId = 3, PaisId = 1, Nome = "UF 3"
},
new UF {
UFId = 4, PaisId = 2, Nome = "UF 4"
},
new UF {
UFId = 5, PaisId = 2, Nome = "UF 5"
},
new UF {
UFId = 6, PaisId = 2, Nome = "UF 6"
},
new UF {
UFId = 7, PaisId = 3, Nome = "UF 7"
},
new UF {
UFId = 8, PaisId = 3, Nome = "UF 8"
},
new UF {
UFId = 9, PaisId = 3, Nome = "UF 9"
},
new UF {
UFId = 10, PaisId = 4, Nome = "UF10"
},
new UF {
UFId = 11, PaisId = 4, Nome = "UF11"
},
new UF {
UFId = 12, PaisId = 4, Nome = "UF12"
},
new UF {
UFId = 13, PaisId = 5, Nome = "UF13"
},
new UF {
UFId = 14, PaisId = 5, Nome = "UF14"
},
new UF {
UFId = 15, PaisId = 5, Nome = "UF15"
},
new UF {
UFId = 16, PaisId = 6, Nome = "UF16"
},
new UF {
UFId = 17, PaisId = 6, Nome = "UF17"
},
new UF {
UFId = 18, PaisId = 6, Nome = "UF18"
},
new UF {
UFId = 19, PaisId = 7, Nome = "UF19"
},
new UF {
UFId = 20, PaisId = 7, Nome = "UF20"
},
new UF {
UFId = 21, PaisId = 7, Nome = "UF21"
},
new UF {
UFId = 22, PaisId = 8, Nome = "UF22"
},
new UF {
UFId = 23, PaisId = 8, Nome = "UF23"
},
new UF {
UFId = 24, PaisId = 8, Nome = "UF24"
},
new UF {
UFId = 25, PaisId = 9, Nome = "UF25"
},
new UF {
UFId = 26, PaisId = 9, Nome = "UF26"
},
new UF {
UFId = 27, PaisId = 9, Nome = "UF27"
}
};#
endregion
var _continente = continente.ToList();
var _pais = pais.ToList();
var _uf = uf.ToList();
//Preciso fazer o filtro aqui:
var _mundo = mundo.ToList();
return _mundo;
}
Entities
public class Mundo {
public int MundoId {
get;
set;
}
public int ContinenteId {
get;
set;
}
public int PaisId {
get;
set;
}
public int UFId {
get;
set;
}
}
public class Continente {
public int ContinenteId {
get;
set;
}
public int PaisId {
get;
set;
}
public string Nome {
get;
set;
}
}
public class Pais {
public int PaisId {
get;
set;
}
public int ContinenteId {
get;
set;
}
public string Nome {
get;
set;
}
public ICollection < Continente > Continente {
get;
set;
}
}
public class UF {
public int UFId {
get;
set;
}
public int PaisId {
get;
set;
}
public string Nome {
get;
set;
}
public ICollection < Pais > Pais {
get;
set;
}
}
Excuse me I do not know exactly what you mean by comparing objects rs... I need to return data from the World Entity based on the parameters I am passing.
– hard123
@Adrianosuv What would be the expected result given your code above?
– mercador