将列表添加到列表中

时间:2010-06-07 07:33:22

标签: c# linq

我有以下代码:

var columnNames = (from autoExport in dataContext.AutoExports
               where autoExport.AutoExportTemplate != null
                  && ContainsColumn(autoExport.AutoExportTemplate, realName)
               select GetDbColumnNames(autoExport.AutoExportTemplate, realName)).ToList();

函数GetDbColumns()返回List<string>的位置。 因此columNames属于List<List<string>>类型。 是否可以创建List<string>,因此GetDbColumns列表中的每个元素都会添加到LinQ查询的结果中?

1 个答案:

答案 0 :(得分:4)

您可以使用“选择多种”结构:

var columnNames = (
    from autoExport in dataContext.AutoExports
    where autoExport.AutoExportTemplate != null
          && ContainsColumn(autoExport.AutoExportTemplate, realName)
    from column in GetDbColumnNames(autoExport.AutoExportTemplate, realName)
    select column).ToList();

或者这是使用SelectMany的另一种方式:

var columnNames = (
    from autoExport in dataContext.AutoExports
    where autoExport.AutoExportTemplate != null
          && ContainsColumn(autoExport.AutoExportTemplate, realName)
    select autoExport
).SelectMany(x => x.GetDbColumnNames(autoExport.AutoExportTemplate, realName))
.ToList();

最后,这是另一种方式(但它包含有点丑陋的代码x => x):

var columnNames = (
    from autoExport in dataContext.AutoExports
    where autoExport.AutoExportTemplate != null
          && ContainsColumn(autoExport.AutoExportTemplate, realName)
    select autoExport.GetDbColumnNames(autoExport.AutoExportTemplate, realName)
).SelectMany(x => x).ToList();