即使一个集合是EMPTY,获取笛卡尔积的LINQ查询是什么?

pen*_*ake 4 .net c# linq left-join cartesian-product

想象一下,我有2个列表,一个是空的:

List<string> foo = new List<string>(){ "Ali","wall-e","Ellie" };
List<string> bar = new List<string>();
Run Code Online (Sandbox Code Playgroud)

我获得了2的笛卡尔积:

var q = from f in foo
    from b in bar
    select new {f,b};
Run Code Online (Sandbox Code Playgroud)

当bar为空时,LINQ返回空结果集.

问题:如何编写上述查询以便我可以收到此结果集:

Ali,NULL

Wall-e,NULL

Ellie,NULL
Run Code Online (Sandbox Code Playgroud)

Jep*_*sen 10

也许这就是你想要的:

var q = from f in foo.DefaultIfEmpty()
    from b in bar.DefaultIfEmpty()
    select new {f,b};
Run Code Online (Sandbox Code Playgroud)