c# - Querying a list to find the count of an ID and merge the contents of two similar IDs -


i have generic c# list list<object> results has several fields several rows of data in follows

list<object> results 

data:

trdid    date       price seller buyer  side 1000     7/23/2015   1     abc    null   2  1000     7/23/2015   1     null   xyz    1 1002     7/22/2015   1.5   null   abc    1 1002     8/22/2015   1.5   null   abc    1 1002     7/22/2015   1.5   xyz    null   2 1002     8/22/2015   1.5   xyz    null   2 1010     8/23/2015   2     acb    null   2  1010     8/23/2015   2     null   pqr    1 

the above list has records ids repeated , want merge records ids repeated twice. , 2 records same ids have same values except seller , buyer seller null when side=1 , buyer null when side=2 , merge them single record replacing null values subsequent other side , resultant list follows

expected results

trdid    date       price seller buyer   1000     7/23/2015   1     abc    xyz   1010     8/23/2015   2     acb   pqr 

as can see above results ids 1000 , 1010 repeated twice, merged each of seller , buyer values , id 1002 discarded count not 2

may know way solve this?

assuming objects in class matching this:

public class result {     public int trdid { get; set; }     public datetime date { get; set; }     public decimal price { get; set; }     public string seller { get; set; }     public string buyer { get; set; } } 

then can query list grouping trdid value:

var groupedresults = results     .groupby(r => new { r.trdid, r.date, r.price })     .where(g => g.count() == 2)     .select(g => new result     {         trdid = g.key.trdid,         date = g.key.date,         price = g.key.price,         seller = g.first(x => x.seller != null).seller,         buyer = g.first(x => x.buyer != null).buyer     }); 

note: need make results variable list<result> work correctly, or use results.cast<result>() first.


Comments

Popular posts from this blog

javascript - Karma not able to start PhantomJS on Windows - Error: spawn UNKNOWN -

c# - Display ASPX Popup control in RowDeleteing Event (ASPX Gridview) -

Nuget pack csproj using nuspec -