0

在以下函数中,当我尝试返回一个值时出现错误:

无法转换 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
}

我该如何解决这个问题?

4

1 回答 1

1

看起来您想从集合中的集合中选择项目并将结果展平为单个序列。

从概念上讲,类似于:

示例类图

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

var propertyNames = _dbSis.ModuleKinds
                          .Where(t => t.PerTypeConfigurationId == configurationId)
                          .SelectMany(x => x.PerTypeConfiguration.Properties)
                          .Select(z => z.Name);
于 2013-07-11T08:22:32.057 回答