我有以下代码:
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查询的结果中?
答案 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();