创建两组

时间:2015-12-10 21:19:01

标签: c# linq

我有两个字符串列表,它们实际上是数据库中主键的值:

        List<string> hisSpecialtyKeysInDB = this.Repository.GetSpecialtyKeysOfThisProvider(providerKey);
        List<string> hisAddressKeysInDB = this.Repository.GetAddressKeysOfThisProvider(providerKey);

它们中的任何一个都可能有甚至没有值。

我想要这两个列表可能具有的这些主键的所有可能组合的组合。 (例如,如果一个有3个项目,另一个有两个项目,我想看到六个项目)

我在下面写了这个查询,但它的计数为零,这是错误的。 在我的测试中,其中一个项目中没有项目,另一个项目有三项,所以我想要返回三个项目。可以将空的那些作为字符串。空,这对我来说没问题。

        var temp = from ps in hisAddressKeysInDB
                   from pa in hisSpecialtyKeysInDB
        select new
        {
            PS = ps,
            PA = pa
        };

        int xxxxx = temp.Count();

1 个答案:

答案 0 :(得分:1)

您可以使用DefaultIfEmpty扩展方法实现所需。 e.g。

var temp = from ps in hisAddressKeysInDB.DefaultIfEmpty("")
           from pa in hisSpecialtyKeysInDB.DefaultIfEmpty("")
           where ps != "" || pa != "" // This is to remove the edge case when both are empty
           select new
           {
               PS = ps,
               PA = pa
           };