我有两个字符串列表,它们实际上是数据库中主键的值:
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();
答案 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
};