Ber*_*amb 2 c# linq export-to-csv entity-framework-5
我正在使用最新的Entity Framework和DBContext.我有一个结果集,我想转换为逗号分隔值.我在VB DataTable中使用DataTables做了类似的事情来进行CSV提取.我有QuoteName方法工作.我还得到了使用foreach工作的GetCSV方法的衍生物.问题是它比DataTable的可比代码要慢得多.所以我希望有人会有一些建议.
public static string GetCSV(this IQueryable entity)
{
if (entity == null)
{
throw new ArgumentNullException("entity");
}
Type T = entity.ElementType;
var props = T.GetProperties(BindingFlags.Public | BindingFlags.Instance);
string s = string.Empty;
int iCols = props.Count();
try
{
s += string.Join(",", (from int ii in Enumerable.Range(0, iCols)
select props[ii].Name.QuoteName("[]")).ToArray());
s += Environment.NewLine;
foreach (var dr in entity)
{
s += string.Join(",", (from int ii in Enumerable.Range(0, iCols)
select
props[ii].GetValue(dr)
.ToString()
.QuoteName("\"\"", ",")).ToArray());
s += Environment.NewLine;
}
s = s.TrimEnd(new char[] { (char)0x0A, (char)0x0D });
}
catch (Exception)
{
throw;
}
return s;
}
Run Code Online (Sandbox Code Playgroud)
cka*_*kal 13
查看nuget包CsvHelper(http://nuget.org/packages/CsvHelper/).
以下是https://github.com/JoshClose/CsvHelper/wiki/Basics的用法示例
using (var csv = new CsvWriter( new StreamWriter( "Actors.csv" ) ))
{
csv.WriteRecords( actorsList );
}
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
9734 次 |
最近记录: |