通过两个不同的值连接2个查询结果

时间:2011-07-12 12:55:49

标签: c# linq join sql-order-by

假设这个对象:

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 个答案:

答案 0 :(得分:4)

通过“join”你的意思是“连接”而不是一种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);