buscando en listas con c#, list.Find o list.FindAll
Tengo en la base de datos todos los feriados, los tengo con año 2000 todos, y en una lista tengo todos los feriados entre en rango de fechas.
Tengo una fecha[en realidad varias] y necesito saber si es un dia feriado o no. por que no pregunto a la base de datos, por que estoy en un bucle, y hacer una consulta por cada dia es muy costoso, asi que me traigo los feriados al inicio del proceso con un rago de tiempo.
Aai que tuve que usar FindAll de la clase List, y usar delegate para esto. esto me retorna una lista con los objetos que coinciden con la condicion aqui el codigo:
como todos los feriados se guardan en año 2000 y la fechas que estoy generando puede ser de cualquier año, tengo que preguntar por el mes y el dia, foo, es una lista de Holidays.
Estoy trabajando con el Framework 2, si estuviera con el 3, podria usar lamda, que seria asi.
Tambien hay otra forma, pero aun no la entiendo mucho :(
--
Atte.
Victor Hugo Saavedra
http://vhspiceros.blogspot.com
Tengo una fecha[en realidad varias] y necesito saber si es un dia feriado o no. por que no pregunto a la base de datos, por que estoy en un bucle, y hacer una consulta por cada dia es muy costoso, asi que me traigo los feriados al inicio del proceso con un rago de tiempo.
Aai que tuve que usar FindAll de la clase List, y usar delegate para esto. esto me retorna una lista con los objetos que coinciden con la condicion aqui el codigo:
var holiday = foo.FindAll(
delegate(Holiday hol){
return (hol.Date.Value.Day == newdateTime.Day
&& hol.Date.Value.Month == newdateTime.Month); });
if (holiday.Count > 0)
log.Info(string.Format("{0} es un feriado", newdateTime));
como todos los feriados se guardan en año 2000 y la fechas que estoy generando puede ser de cualquier año, tengo que preguntar por el mes y el dia, foo, es una lista de Holidays.
Estoy trabajando con el Framework 2, si estuviera con el 3, podria usar lamda, que seria asi.
var holiday= foo.FindAll(
hol => (hol.Date.Value.Day == newdateTime.Day
&& hol.Date.Value.Month == newdateTime.Month));
Tambien hay otra forma, pero aun no la entiendo mucho :(
si bien retorna un delegate, en la firma del metodo retona un Predicate, me imagino que hace un cast o algo por el estilo.
var bar = public Predicate<holiday> checkHoliday(DateTime date){ return delegate(Holiday item) { return item.Date.Value.Day == date.Day && item.Date.Value.Month == date.Month; };}
foo.FindAll(checkHoliday(newdateTime));
--
Atte.
Victor Hugo Saavedra
http://vhspiceros.blogspot.com
Crítica constructiva, se escribe "bien", no "vien". ¡¡Saludos!!
ResponderEliminarfunciono, gracias
ResponderEliminarHola, yo tengo un problema con una lista de nombres, yo recupero un nombre de otro archivo y este nombre es exactamente a uno de los nombres de la lista pero no me lo reconoce, ya use el metodo de Contain pero aun asi no me lo encuentra y no se porque pasa esto...
ResponderEliminarHola Carlos,
ResponderEliminarCreo que no te puedo ayudar mucho... no entiendo muy bien cual es tu problema...
--
Atte.
Víctor Hugo Saavedra
http://vhspiceros.blogspot.com