我正在使用此命令从我的查询中获取数据:
private void loadData()
{
numRows = 0;
try
{
data = gpso.gpEntitiesObject.ExecuteStoreQuery<My_Class>(sql);
dataGrid.ItemsSource = data;
dataGrid.IsReadOnly = true;
numRows = dataGrid.Items.Count;
numRowsTB.Text = "Number of rows: " + numRows;
}
catch (Exception ex)
{
statusBarTB.Text = "exception: " + ex.Message;
}
}
虽然这有效但我在DataGrid中看到数据,但我无法将数据保存到CSV文件,因为我试图再次重新枚举查询结果,这是不允许的。
获取数据并将其保存为CSV的正确方法是什么? 我应该使用DataGrid API滚动行并在foreach()循环中获取数据吗?
这是我的CSV功能:
public static string exportToCSV(IEnumerable<My_Class> data, string separator)
{
string ishod = "";
string csvRed = "";
ishod += "Key1" + separator + "Key2" + separator;
ishod += "Key3" + separator + "Key4" + separator;
ishod += "\n";
foreach (My_Class item in data)
{
csvRed += item.Key1+ separator + item.Key2+ separator;
csvRed += item.Key3+ separator + item.Key4+ separator;
csvRed += "\n";
ishod += csvRed;
csvRed = "";
}
return ishod;
}
答案 0 :(得分:1)
我跟着@Clemens建议。我用了
IEnumerable dataList = data.ToList<My_Class>();
dataGrid.ItemSource = dataList;
然后我打电话给
exportToCSV(dataList, "\t");
使用dataList作为参数,它工作正常!