Visualizzazione dei risultati da 1 a 2 su 2

Discussione: [C#] List compare

  1. #1

    [C#] List compare

    ho un oggetto che rappresenta una tabella di un db con varie propietà.
    dovrei implementare un Compare personalizzato.
    ho iniziato ma poi mi sono fermato perchè ho qualche dubbio:
    codice:
    using System;
    using System.Collections.Generic;
    
    namespace Banca
    {
        public class Entrate: IComparer<Entrate>
        {
            public int id { get; set; }
            public decimal valore { get; set; }
            public int causale_id { get; set; }
            public int conto_id { get; set; }
            public string data { get; set; }
            public string note { get; set; }
            public int tb_causale_id { get; set; }
            public string causale_nome { get; set; }
            public int tb_conto_id { get; set; }
            public string conto_nome { get; set; }
    
            public Entrate(int id, decimal valore, int causale_id, int conto_id, string data, string note, int tb_causale_id, string causale_nome, int tb_conto_id, string conto_nome)
            {
                this.id = id;
                this.valore = valore;
                this.causale_id = causale_id;
                this.conto_id = conto_id;
                this.data = data;
                this.note = note;
                this.tb_causale_id = tb_causale_id;
                this.causale_nome = causale_nome;
                this.tb_conto_id = tb_conto_id;
                this.conto_nome = conto_nome;
            }
    
            public int compare(Entrate x, Entrate y)
            {
                if (x == null) throw new ArgumentException("x");
                if (y == null) throw new ArgumentException("y");
    
                int result;
    
                return result;
            }
        }
    }
    come faccio a compararne uno per uno??

  2. #2
    Utente di HTML.it L'avatar di rsdpzed
    Registrato dal
    Aug 2001
    Messaggi
    764
    Forse volevi implementare IComparable.

    In ogni caso il succo è lo stesso, sei tu che decidi il criterio, l'importante è che abbia un senso. Puoi comparare gli id, le date (convertite in DateTime), gli importi...potresti per assurdo fare la somma dei risultati del compareTo di ogni proprietà ma diventerebbe un non-sense a tutti gli effetti. Tuttavia io non lo trovo molto "esatto" ridurre a questo la comparabilità di un intero oggetto di quel tipo anche se avesse un senso, in quanto è un criterio che puo andar bene in un ambito ma non in mille altri.

    Per questo si usano le classi che implementano IComparer. Sono classi a parte (e non le entità come Entrate!) che implementano il metodo compare su cui puoi metterci una logica personalizzata in base all'esigenza del momento. Istanze del genere possono poi essere passate a metodi come Sort, orderBy ecc.

    Poi, se non ricordo male, un buon design del metodo vuole che compare(null, null) deve dare 0, compare(a,null) 1 e compare (null,a) -1, senza lanciare quelle eccezioni (che dovrebbero essere al limite ArgumentNullException).

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.