объединить 2 результата запроса по двум разным значениям - PullRequest
2 голосов
/ 12 июля 2011

Предполагая, что этот объект:

DXMessage
{
    public byte[] msg;
    public int time;
    public int millisecond;
}

и предполагая, что у меня есть 2 отсортированных списка:

public static SortedList<long, DXMessage> brimstoneMessages = 
            new SortedList<long, DXMessage>();

public static SortedList<long, DXMessage> gpsMessages =
            new SortedList<long, DXMessage>();

Я выполнил 2 запроса на 2 разных списка сообщений:

var bsQuery = GlobalObjects.bsMessages.Where(t =>
            ((t.Value.Time >= eventStart))).ToList();

var gpsQuery = GlobalObjects.gpsMessages.Where(t =>
            ((t.Value.Time >= eventStart))).ToList();

Я хотел бы взять результаты этих двух запросов и объединить их в порядке возрастания времени и миллисекунды.

1 Ответ

4 голосов
/ 12 июля 2011

Под "объединением" вы подразумеваете "объединение", а не своего рода соединение SQL? Я подозреваю, что вы просто хотите:

var combined = bsQuery.Concat(gpsQuery)
                      .OrderBy(x => x.Value.time)
                      .ThenBy(x => x.Value.millisecond);

Неясно, почему у вас так много скобок в ваших запросах - кстати, и в этом случае похоже, что вы могли бы на самом деле выполнить комбинацию раньше:

var combined = GlobalObjects.bsMessages
                            .Concat(GlobalObjects.gpsMessages)
                            .Where(t => t.Value.Time >= eventStart)
                            .OrderBy(t => t.Value.Time)
                            .ThenBy(t => t.Value.Millisecond);
...