У вас должно быть поле, которое показывает, из какой таблицы вы их взяли:
SELECT "Field 1" AS fullname, null AS limsuser_id, 1 as [order]
UNION
SELECT fullname, limsuser_id, 1 as [order] from table1
UNION
SELECT "Field 2" AS fullname, null AS limsuser_id, 2 as [order]
UNION
SELECT fullname, limsuser_id, 2 as [order] from table2
Тогда вы можете просто сделать это:
var result = yourItems.OrderByDescending(x=> x.fullname == "Field 1" || x.fullname == "Field 2")
.ThenBy(x=> x.fullname)
.GroupBy(x=> x.order);
.OrderByDescending(x=> x.fullname == "Field 1" || x.fullname == "Field 2")
гарантирует, что Field 1
и Field 2
будут стоять на вершине своих групп независимо от их алфавитного порядка.
.ThenBy(x=> x.fullname)
затем отсортирует его по fullname
, тогда вы можете GroupBy на order
field.
Или, если у вас нулевой идентификатор только для Field 1
и Field 2
, вы можете сделать это:
var result = yourItems.OrderByDescending(x=> x.limsuser_id == null)
.ThenBy(x=> x.fullname)
.GroupBy(x=> x.order);