C# 在Linq到Sql中使用本地序列进行左外连接

C# 在Linq到Sql中使用本地序列进行左外连接,c#,linq,linq-to-sql,left-join,C#,Linq,Linq To Sql,Left Join,我需要绕过不能在Linq到Sql限制中使用的本地序列,执行左外部联接。左侧外部联接应返回IQueryable 下面是一个示例代码: public IQueryable<MyContainer> LeftOuter(IQueryable<MyContainer> query, List<Guid> myIds) { var leftOuterQuery = from container in query

我需要绕过不能在Linq到Sql限制中使用的本地序列,执行左外部联接。左侧外部联接应返回IQueryable

下面是一个示例代码:

public IQueryable<MyContainer> LeftOuter(IQueryable<MyContainer> query, List<Guid> myIds)
{
    var leftOuterQuery =
                        from container in query
   /* Exception --> */  from id in myIds.Where(myId => container.ContainerId == myId).DefaultIfEmpty()
                        select new { Container = container, Id = id };

    return leftOuterQuery.Where(joined => joined.Container.ContainerId == null)
                         .Select(joined => joined.Container);    
}                    

您是否尝试过从query.ToList中的容器中删除记录?我不想具体化这些记录可能会导致OutOfMemory异常。我从MyID中的id计算。将其锁定到内存的位在哪里?您是否尝试查找MyID中包含的id?这不是类似于query.WheremyIds.containerscontainer.ContainerId吗?你能描述一下你想用一个小数据集实现什么吗?@Adam Benson,函数返回的查询对象应该是传入查询对象的过滤版本。假设对传递的查询调用ToList返回10k个对象,并假设MyID包含前1k个对象的ID,则对返回的查询调用ToList应返回其他9k个对象。请注意,我可以执行查询。其中!但我认为它效率不高,因此更喜欢左连接并调用where select,如上面的代码所示