C# 如何用lambda链接左连接

C# 如何用lambda链接左连接,c#,.net,linq,lambda,entity-framework-core,C#,.net,Linq,Lambda,Entity Framework Core,如果我有 class A { int id; IQueryable<B> bs; } class B { int id; int AId; IQueryable<C> cs; } class C { int id

如果我有

    class A
        {
            int id;
            IQueryable<B> bs;
        }
        class B
        {
            int id;
            int AId;
            IQueryable<C> cs;
        }
        class C
        {
            int id;
    int AID
            int Bid;

        }

我怎么能用lambda做到这一点?我知道一般情况下,左连接是通过组连接完成的,但我不知道如何获取c所需的密钥,这在我使用的实体框架版本ef core 3.0中无法实现,因为它不支持组连接。希望这会改变

这能回答你的问题吗?看看答案,lambda不是真的。我可以让第一个join正常工作,这就是示例中他们所做的。我的问题是加入第三种类型这可能是一个很好的学术问题,但在现实世界中你是在浪费时间,因为当你使用对象集合时,直线LINQ比lambda连接快得多。如果最终使用LINQtoSQL,那么最终可能会出现错误的查询。由于性能(LINQ到对象)和查询正确性(LTS),我已经完成了用LINQ替换所有lambda(带有连接)的练习。我没有注意到性能有问题。也许你处理的数据集比我大,但你说得对,这在很大程度上是一个学术问题,因为我可以使用ado轻松解决我自己的问题,并执行sql,这将比两者都快。从我以前的工作电子邮件:
var data=From a in listA From b in listB。其中(x=>x.Id==a.Id)选择a;//~3.5秒
var data=从列表a中的a将b加入a中的列表b。Id等于b。Id选择a;//~0.03秒
and in sql i could join them like
    select * from A
    left join b on a.Id = B.AID
    left join c on a.ID = c.AId and b.id = c.bID