Click here to Skip to main content
15,885,244 members
Please Sign up or sign in to vote.
5.00/5 (1 vote)
Hi all,
I have an application in which i get the id's from a gridview and save it in an integer list List<int>.

C#
List<int> list = new List<int>();

//Example say, if the values in my list is 

 list={100,100,101,124,155,114,101};

//I want my list to return only unique values as i am passing my list to a database for retrieving data.

//I want my list to return like this.

list={100,101,124,155,114};

How can i do this.Pls help me....
Posted
Updated 14-Apr-21 7:54am

Check this

XML
List<int> list = new List<int>();
            list.Add(100);
            list.Add(100);
            list.Add(101);
            list = list.Distinct().ToList();


Now this will have 100 and 101
 
Share this answer
 
Comments
ajithk444 10-Oct-12 7:28am    
thank U.:)it helped:)
Why not using LINQ ?

C#
List<int> l = new List<int>() { 100, 100, 101, 102, 103, 102 };

var v = l.Distinct();

foreach (var item in v)
{
    Debug.WriteLine(item.ToString());
}

// or

List<int> li = l.Distinct().ToList();


Will give you:

100
101
102
103
 
Share this answer
 
v2
Comments
TheCoolCoder 10-Oct-12 6:12am    
Was abt to post this and thought about refreshing :-)..
Andy411 10-Oct-12 6:18am    
:-)
ajithk444 10-Oct-12 7:28am    
thank U.:)it helped:)
Either you can write your own algorithm or if you are using .Net 3.5 and above use HasSet.

Once you have your values in list, use following code

C#
HashSet<int> uniqueNumbers = new HashSet<int>(list);</int></int>


This will give a HashSet with unique number, in your case list of 5 values only.
 
Share this answer
 
Comments
ajithk444 10-Oct-12 7:28am    
thank U.:)it helped:)
MT_ 10-Oct-12 8:42am    
Glad that it helped
A possibility for your own function (as said in solution 1)

You can start copying the first element to the second list and then delete it with RemoveAt, then use the Findcommand with that element. If found... remove it and try to find it another time, If not found start from the beggining with the next item to be copied to the second list.

You can use the FindAll and RemoveAll as well

Have a look
http://msdn.microsoft.com/en-us/library/6sh2ey19.aspx[^]
 
Share this answer
 
v3
Comments
ajithk444 10-Oct-12 7:28am    
thank U.:)it helped:)
Nelek 11-Oct-12 7:06am    
You are welcome. :)
THIS IS HOW I DID in a big complicated manner though.Anyway thanks for all ur feedback.It helped a lot.

C#
public List<int> GetEmpID() //Get unique ID's in a list 
    {
        List<int> list = new List<int>();
        List<int> Newlist = new List<int>();
        foreach (GridViewRow gvr in this.gridBWAProject.Rows)
        {
            if (((System.Web.UI.WebControls.CheckBox)gvr.FindControl("chkSelect")).Checked == true)
            {
                list.Add(Convert.ToInt32(gvr.Cells[1].Text.ToString()));
            }
        }
        
        IEnumerable<int> distinctlist = list.Distinct();
        foreach (int id in distinctlist)
       {
        Newlist.Add(id);
       }
        return Newlist;
 
Share this answer
 
v3
Comments
MT_ 10-Oct-12 8:43am    
You can replace IEnumerable<int> distinctlist = list.Distinct(); by newList = IEnumerable<int> distinctlist = list.Distinct().ToList();
MT_ 10-Oct-12 8:43am    
That will save you a foreach loop.

This content, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)



CodeProject, 20 Bay Street, 11th Floor Toronto, Ontario, Canada M5J 2N8 +1 (416) 849-8900