linq - Getting distinct values from an ArrayList in C# -


i have arraylist looks this

this how clientarray formed:

arraylist clientarray = new arraylist();  foreach (dictionary<string, object> media in medialist) {     // advertisers container object     dictionary<string, object> clientcontainer = (dictionary<string, object>)media["advertisers"];      //get list of advertisers (clients)     var clientlist = clientcontainer["advertiser"] arraylist;     var clientlistlist = clientlist.cast<dictionary<string, object>>().tolist();      //add fields not olalready in dictionary     clientlistlist.foreach(d => d.add("mediacode", media["code"].tostring()));     clientlistlist.foreach(d => d.add("medianame", media["name"].tostring()));     clientlistlist.foreach(d => d.add("agencyalpha", mediaresponse["agencyalpha"].tostring()));     clientlistlist.foreach(d => d.add("createdby", system.reflection.assembly.getexecutingassembly().fullname.tostring()));     clientlistlist.foreach(d => d.add("createddt", datetime.now));      foreach (dictionary<string, object> client in clientlistlist)     {         clientarray.add(client);     } } 

this how clientarray looks like:

{   "client": [     {       "code": "abc",       "name": "abc inc",       "businesskey": "abc123",       "mediacode": "i",       "medianame": "interactive",       "agencyalpha": "ub",       "createdby": "dataapi, version=1.0.0.0, culture=neutral, publickeytoken=null",       "createddt": "2014-04-08t12:47:54.5855957-04:00"     },     {       "code": "def",       "name": "def inc",       "businesskey": "def456",       "mediacode": "i",       "medianame": "interactive",       "agencyalpha": "ub",       "createdby": "dataapi, version=1.0.0.0, culture=neutral, publickeytoken=null",       "createddt": "2014-04-08t12:47:54.5855957-04:00"     }, etc... 

i need put distinct codes list. have far returning all codes (not want). how do this?

list<string> listofcodes = new list<string>();  foreach (dictionary<string, object> obj in clientarray ienumerable) {     listofcodes.insert(0, obj["code"].tostring()); }  listofcodes.distinct().tolist(); 

something ought you:

arraylist = getmyarraylist() ;  ...  list<string> listofcodes = clientarray .cast<dictionary<string,object>>() .select( x => x["code"] string) .distinct( stringcomparer.ordinalignorecase ) .tolist() ; 

another approach use hashset<t> or sortedset<t>, like:

ienumerable<string> codebag = clientarray                               .cast<dictionary<string,object>>()                               .select( x => x["code"] string)                               .where( s => !string.isnullorempty(s) )                               ; hashset<string>     codeset = new hashset<string>( codebag , stringcomparer.ordinalignorecase ) ; 

Comments

Popular posts from this blog

apache - Remove .php and add trailing slash in url using htaccess not loading css -

javascript - jQuery show full size image on click -