Tengo un list<message>
que contiene propiedades del tipo Guid
y DateTime
(así como otras propiedades). Me gustaría deshacerme de todos los elementos de esa lista donde Guid
y DateTime
son iguales (excepto uno). Habrá ocasiones en que esas dos propiedades será el mismo que otros elementos de la lista, pero las otras propiedades serán diferentes, por lo que no sólo puede utilizar .Distinct()
Seleccionar distinto por dos propiedades en una lista
List<Message> messages = GetList();
//The list now contains many objects, it is ordered by the DateTime property
messages = from p in messages.Distinct( what goes here?);
Esto es lo que tengo en este momento, pero parece que debe haber una mejor manera
List<Message> messages = GetList();
for(int i = 0; i < messages.Count() - 1) //use Messages.Count() -1 because the last one has nothing after it to compare to
{
if(messages[i].id == messages[i+1}.id && messages[i].date == message[i+1].date)
{
messages.RemoveAt(i+1);
{
else
{
i++
}
}
http://stackoverflow.com/questions/489258/linq-distinct-on-a-particular-property – Shyju
Gracias. No sé por qué no pude encontrar eso cuando busqué. – user1304444
Me alegra que la respuesta de Jon haya funcionado para ti. Solo una nota de precaución: su "método utilizado actualmente" no se compila y (después de corregir los errores de compilación) no funcionará en todos los casos: según el orden de los elementos, se obtendría diferente ** (error ** resultados (después de todo, solo comparas elementos adyacentes entre sí). – Adam