【发布时间】:2018-10-05 07:23:50
【问题描述】:
您好,我有此代码可将列表导出到 Excel:
private DataTable ListaDatiReportQuietanzamento(List<DatiReportQuietanzamento> datiReportQuietanzamento)
{
DataTable dt = new DataTable("DatiReportQuietanzamento");
dt.Columns.Add("Polizza");
dt.Columns.Add("Posizione");
dt.Columns.Add("Codice Frazionamento");
var result = datiReportQuietanzamento.ToDataTable().AsEnumerable().Select(p =>
new
{
n_polizza = p.Field<long>("n_polizza"),
n_posizione = p.Field<byte>("n_posizione"),
c_frazionamento = p.Field<string>("c_frazionamento")
}).Distinct().ToList();
foreach (var item in result)
{
dt.Rows.Add(item.n_polizza, item.n_posizione, item.c_frazionamento);
}
return dt;
}
此方法适用于不包含很多项目的列表,但当列表非常大时,该方法会花费太多时间。
有一种方法可以避免 foreach 并直接将项目添加到行中?也许是 Lambda 表达式?
谢谢。
【问题讨论】:
-
对于初学者,您可以避免使用
datiReportQuietanzamento.ToDataTable().AsEnumerable(),直接使用datiReportQuietanzamento.Select()。还要避免.ToList() -
另外here 是您如何使用选定的列用其他数据表填充一个数据表
-
我删除了 tsql 标签,因为您使用的是 EntityFramework。如果您确实想使用 SQL 查询,链接帖子中有答案。
标签: c# entity-framework