Im folgenden Beispiel wird gezeigt, wie wir ein CSV-File mit LINQ erstellen können. Als Datenbank wird die SQL Server 2005 AdventureWorks-Datenbank verwendet.
Die Erstellung des CSV-Files erfolgt in drei Schritten:
Schritt 1: Die Daten aus der Datenbank ermitteln.
string conStr =
@"Data Source=IBM-E6A5BAE860C\SQL2K5;Initial Catalog=AdventureWorks;Integrated Security=True";
var db = new AdventureWorksDataContext(conStr);
IQueryable<ProductCategory> qry = from pc in db.ProductCategories
select pc;
Schritt 2: Die Felder für den Export in das CSV-File bestimmen.
int[] field1 = qry.Select(f => f.ProductCategoryID).ToArray();
string[] field2 = qry.Select(f => f.Name).ToArray();
Guid[] field3 = qry.Select(f => f.rowguid).ToArray();
In diesem Schritt werden die Werte der einzelnen Felder in einem Array-Objekt gespeichert. Der Select-Operator hilft uns dabei, die Wert zu ermitteln.
Schritt 3: Die Daten in das CSV-File schreiben.
TextWriter txtWrt = new StreamWriter(@"C:\ProductCategories.csv");
for (int i = 0; i < field1.Length; i++)
{
txtWrt.Write(field1[i] + ";");
txtWrt.Write(field2[i] + ";");
txtWrt.Write(field3[i].ToString());
txtWrt.WriteLine();
}
txtWrt.Close();
Den vollständigen Code findet ihr unten:
using System;
using System.IO;
using System.Linq;
namespace LinqCsvSamples0010
{
internal class Program
{
private static void Main(string[] args)
{
string conStr =
@"Data Source=IBM-E6A5BAE860C\SQL2K5;Initial Catalog=AdventureWorks;Integrated Security=True";
var db = new AdventureWorksDataContext(conStr);
IQueryable<ProductCategory> qry = from pc in db.ProductCategories
select pc;
int[] field1 = qry.Select(f => f.ProductCategoryID).ToArray();
string[] field2 = qry.Select(f => f.Name).ToArray();
Guid[] field3 = qry.Select(f => f.rowguid).ToArray();
TextWriter txtWrt = new StreamWriter(@"C:\ProductCategories.csv");
for (int i = 0; i < field1.Length; i++)
{
txtWrt.Write(field1[i] + ";");
txtWrt.Write(field2[i] + ";");
txtWrt.Write(field3[i].ToString());
txtWrt.WriteLine();
}
txtWrt.Close();
Console.ReadLine();
}
}
}
Ein ZIP-File für den Download findet ihr unter: LinqCsvSamples0010
Unter CodeProject findet ihr zu diesem Thema folgenden Artikel: LINQ to CSV library
Viel Spass...
No comments:
Post a Comment