无法转换IQueryable <ienumerable <string>&gt;返回类型IEnumerable <string> </string> </ienumerable <string>

时间:2013-07-11 08:15:14

标签: c# .net linq ienumerable iqueryable

在以下函数中,当我尝试返回一个值:

时,我收到错误
  

无法转换   System.Linq.IQueryable<System.Collections.Generic.IEnumerable<string>>   返回类型System.Collections.Generic.IEnumerable<string>

public IEnumerable<string> GetModuleKindPropertyNames(long moduleKindId)
{
    var configurationId = GetModuleKindPertypeConfigurationId(moduleKindId);
    var propertyNames = _dbSis.ModuleKinds
                              .Where(t => t.PerTypeConfigurationId == configurationId)
                              .Select(x => x.PerTypeConfiguration.Properties
                              .Select(z => z.Name));

    return propertyNames; //red line below property names
}

我该如何解决这个问题?

1 个答案:

答案 0 :(得分:1)

您希望从集合中的集合中选择项目,并将结果整理为单个序列。

从概念上讲,类似于:

Example class diagram

如果是这种情况,那么您正在寻找SelectMany方法:

var propertyNames = _dbSis.ModuleKinds
                          .Where(t => t.PerTypeConfigurationId == configurationId)
                          .SelectMany(x => x.PerTypeConfiguration.Properties)
                          .Select(z => z.Name);