c# - Group by results which are in the same order -


i have problem grouping resultset.

i need group results on tab_1_colname , (different part) order of results of tab_2_order if have same tab_2_ids.

so have first resultset, looks this:

  tab_1_colname tab_2_colname   tab_2_id    tab_2_order     name_1          type_1          16          10     name_1          type_2          17          20     name_1          type_3          18          30     name_2          type_1          16          10     name_2          type_2          17          20     name_2          type_3          18          30     name_3          type_1          16          400     name_3          type_2          17          500     name_3          type_3          18          600     name_4          type_1          16          10     name_4          type_3          18          20     name_4          type_2          17          30 

the result need looks this:

group1 => (name_1 - name_3) ids in order (16, 17, 18), group2 => (name_4) ids in order (16, 18, 17) 

i have no idee how achive this. tried group directly on db, there stuck on

select      tab_1_colname, tab_2_id      tab_1,     tab_2     tab_1_othderid = tab_2_othderid group      tab_2_id, tab_1_colname 

my second idea try linq, there stuck fast pure sql try

dt.rows.oftype<datarow>().orderby(x => x["tab_2_order"]).groupby(r => r["tab_2_id"]) 

any ideas how solve problem?

edit:

expected result:

first row: name_1 tab_2_ids order tab_2_order.

second row: name_4 tab_2_ids order tab_2_order.

(name_2 , name_3 should in same group name_1 because have same tab_2_ids in same order)

you don use aggregation function don't need grou .. instead use disticnt select distinct value and/or order ordering result eg:

 select distinct    tab_1_colname, tab_2_id    tab_1,   tab_2 tab_1_othderid = tab_2_othderid order     tab_2_id, tab_1_colname 

Comments