Solved

How do I sort on lastname?

Posted on 2009-07-11
7
255 Views
Last Modified: 2012-05-07
I would like to sort on lastname and second on firstname.

how?

I would like to use IComparable
ContactManager.cs

--------------------------------

using System;

using System.Collections.Generic;

using System.Text;

 

namespace Persons

{

    [Serializable]

    public class ContactManager

    {

 

        //Deklaration

        List<Contact> contact;

        bool exists = false;

 

        #region Konstruktor

 

 

 

        public ContactManager()

        {

            contact = new List<Contact>();           

            exists = true;

        } //end CustomerManager

 

 

 

         public ContactManager(List<Contact> constact)

        {

            this.contact = constact;

        } //end CustomerManager

 

        #endregion

        

 

        #region Egenskaper

 

 

 

        public int Count

        {

            get { return contact.Count; }

        } //end Count

 

 

 

        public List<Contact> Contacts

        {

            get { return contact; }

            set { contact = value; }

        } //end Customers

 

 

        #endregion

 

 

        #region Metoder

 

 

 

        public int Search(Contact cust)

        {

            int found = -1;

 

            if (exists)

            {

                for (int i = 0; i < contact.Count; i++)

                {

                    if (contact[i].FirstName.Equals(cust.FirstName) && contact[i].LastName.Equals(cust.LastName))

                    {

                        found = i;

                    } //end if                                    

                } //end for

            } //end if

 

 

            return found;

        } //end Search

 

 

 

        public List<Contact> FindALetterSearch(char letter)

        {

 

            List<Contact> returnList = new List<Contact>();

 

            if (exists)

            {

                returnList = contact.FindAll(c => c.LastName.Trim().ToLowerInvariant().StartsWith(letter.ToString().Trim().ToLowerInvariant()));

 

            } //end if            

            return returnList;

 

 

            

        } //end Search

 

 

        public void DeleteCustomer (int index) 

        {

            if (exists)

            {

                contact.RemoveAt(index);                

            } //end if        

        } //end DeleteCustomer

 

 

 

        public void ChangeCustomer(Contact cust)

        {

 

        }

 

 

        public Contact GetCustomer(int index)

        {

            return null;

        } //end GetCustomer

 

 

 

 

        public void AddCustomer(Contact cust)

        {

            if(exists)

            {

                contact.Add(cust);

            } //end if

 

            else

            {

                contact = new List<Contact>();

                contact.Add(cust);

                exists = true;

            } //end else            

        } //end AddCustomer

 

 

 

 

 

        #endregion

 

    } //end class

} //end namespace

 

 

-------------------------------

Contact.cs

----------------------------

 

using System;

using System.Collections.Generic;

using System.Text;

 

namespace Persons

{

    [Serializable]

    public class Contact : IContact

    {

        #region Attribut

 

        private string m_firstName;

        private string m_lastName;

        private List<Phone> m_phone;

        private Address m_adress;

        private Email m_email;

        private static int m_id;

        private int thiscount;

 

        #endregion

 

 

        #region Konstruktor

 

 

 

        //*******************************************************************

        //          Contact

        //*******************************************************************

        public Contact()

        {

            m_adress = new Address ();

            m_email = new Email ();

            m_lastName = string.Empty;

            m_firstName = string.Empty;

            m_phone = new List<Phone> ();

 

            thiscount = m_id++;

        } //end Contact

 

 

 

        //*******************************************************************

        //          Contact

        //*******************************************************************

        public Contact(string name, string lastname, Address adress, List<Phone> phone, Email email)

        {

            m_adress = adress;

            m_email = email;

            m_lastName = lastname;

            m_firstName = name;

            m_phone = phone;

 

            thiscount = m_id++;

        } //end Contact

 

        #endregion

 

 

 

        #region Egenskaper

 

 

        //*******************************************************************

        //          MyAdress

        //*******************************************************************

        public Address MyAdress

        {

            get { return m_adress; }

            set { m_adress = value; }

        } //end MyAdress

 

 

 

        //*******************************************************************

        //          Id

        //*******************************************************************

        public int Id

        {

            get { return thiscount; }

            set { thiscount = value; }

        } //end Id

 

 

 

        //*******************************************************************

        //          MyEmail

        //*******************************************************************

        public Email MyEmail

        {

            get { return m_email; }

            set { m_email = value; }

        } //end MyEmail

 

 

        //*******************************************************************

        //          FirstName

        //*******************************************************************

        public string FirstName

        {

            get { return m_firstName; }

            set { m_firstName = value; }

        } //end FirstName

 

 

        //*******************************************************************

        //          LastName

        //*******************************************************************

        public string LastName

        {

            get { return m_lastName; }

            set { m_lastName = value; }

        } //end LastName

 

 

        //*******************************************************************

        //          Telephone

        //*******************************************************************

        public List<Phone> Telephone

        {

            get { return m_phone; }

            set { m_phone = value; }

        } //end Telephone

 

 

 

        #endregion

 

 

 

        #region Metoder

 

 

        //*******************************************************************

        //          GetContact

        //*******************************************************************

        public string GetContact()

        {

            return m_lastName;

        } //end GetContact

 

 

 

        //*******************************************************************

        //          ToString

        //*******************************************************************

        public override string ToString()

        {

            return "" + m_firstName + m_lastName + m_adress.ToString() + m_phone.ToString() + m_email.ToString();

        } //end ToString

 

        #endregion

 

 

        #region IContact Members

 

 

        

        /// <summary>

        /// 

        /// </summary>

        /// <param name="fname"></param>

        public void setFirstName(string fname)

        {

            this.FirstName = fname;

        }

 

 

 

        /// <summary>

        /// 

        /// </summary>

        /// <param name="lname"></param>

        public void setLastName(string lname)

        {

            this.LastName = lname;

        }

 

        #endregion

    } //end class

} //end namespace

Open in new window

0
Comment
Question by:Mickeys
  • 4
  • 3
7 Comments
 
LVL 29

Expert Comment

by:Göran Andersson
ID: 24830396
What is it that you want sorted?
0
 

Author Comment

by:Mickeys
ID: 24830450
my contact.last name   (first)
and then second if there is the same lastname.......it should sort on firstname
0
 
LVL 29

Expert Comment

by:Göran Andersson
ID: 24830522
How you want it sorted is clear, but what is it that you want sorted?
0
How to run any project with ease

Manage projects of all sizes how you want. Great for personal to-do lists, project milestones, team priorities and launch plans.
- Combine task lists, docs, spreadsheets, and chat in one
- View and edit from mobile/offline
- Cut down on emails

 

Author Comment

by:Mickeys
ID: 24830559
I have a contactManager
In this there is a contact List.

This list is what I want sorted
0
 

Author Comment

by:Mickeys
ID: 24830565
To be specifc:   List<Contact> contact;
in ContactManager.cs
0
 
LVL 29

Accepted Solution

by:
Göran Andersson earned 500 total points
ID: 24830676
I suggest that you use the interface IComparable<Contact> instead of the interface IComparable.

Make the Contact class implement the interface, and it's CompareTo method:

class Contact : IComparable<Contact> {

   public int CompareTo(Contact other) {
      int result = this.LastName.CompareTo(other.LastName);
      if (result == 0) {
         result = this.FirstName.CompareTo(other.FirstName);
      }
      return result;
   }

   ...

}

Then you can easily sort the contacts:

contact.Sort();
0
 

Author Closing Comment

by:Mickeys
ID: 31602417
Ahhh now I see. Thx it works great as well
0

Featured Post

Top 6 Sources for Identifying Threat Actor TTPs

Understanding your enemy is essential. These six sources will help you identify the most popular threat actor tactics, techniques, and procedures (TTPs).

Join & Write a Comment

Suggested Solutions

Title # Comments Views Activity
Windows phone Development 11 28
How do I get the unique ID after insert? 87 90
Image(2) 3 26
install app on other machine 13 11
It was really hard time for me to get the understanding of Delegates in C#. I went through many websites and articles but I found them very clumsy. After going through those sites, I noted down the points in a easy way so here I am sharing that unde…
Real-time is more about the business, not the technology. In day-to-day life, to make real-time decisions like buying or investing, business needs the latest information(e.g. Gold Rate/Stock Rate). Unlike traditional days, you need not wait for a fe…
In this seventh video of the Xpdf series, we discuss and demonstrate the PDFfonts utility, which lists all the fonts used in a PDF file. It does this via a command line interface, making it suitable for use in programs, scripts, batch files — any pl…
This demo shows you how to set up the containerized NetScaler CPX with NetScaler Management and Analytics System in a non-routable Mesos/Marathon environment for use with Micro-Services applications.

706 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question

Need Help in Real-Time?

Connect with top rated Experts

20 Experts available now in Live!

Get 1:1 Help Now