我正在使用最新的实体框架和 DBContext。我有一个要转换为逗号分隔值的结果集。我在 VB DataTable to CSV extract 中对 DataTables 做了类似的事情。我有 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;
}