2016-07-28 23 views
0

これはコードスニペットです。C#でDatabase.SqlQueryから取得したデータを表示するにはどうすればよいですか?

string query = "SELECT EnrollmentDate, COUNT(*) AS StudentCount " 
      + "FROM Person " 
      + "WHERE Discriminator = 'Student' " 
      + "GROUP BY EnrollmentDate"; 

IEnumerable<EnrollmentDateGroup> data = db.Database.SqlQuery<EnrollmentDateGroup>(query); 

System.IO.File.WriteAllText(@"C:\Users\Admin\Desktop\log.txt", data.ToString()); // or ToList()? 

私の最後のコード行から、基本的に同じテキストがクエリに含まれています。テキストファイルに表示したいのはデータベースの実際のデータですか?それをどうやって得るのですか?

答えて

2

data.ToString()は、データではなくクラスに関する情報を返します。あなたはをForEachを使用するためのリストにキャストする必要があり、この

StringBuildet text = new StringBuilder(); 

data.ToList().ForEach(d => text.Append(/* Here what you want to do with each item of the EnrollmentDataGroup /*)); 

System.IO.File.WriteAllText(@"C:\Users\Admin\Desktop\log.txt", text); 

まずように行う必要があります。 それとも、IEnumerableを

public static void ForEach<T>(this IEnumerable<T> enumeration, Action<T> action) 
{ 
    foreach(T item in enumeration) 
    { 
     action(item); 
    } 
} 
+0

は '使用します繰り返しの文字列連結の代わりにStringBuilderを使用します。 –

+0

@MikeNakis編集:ありがとうございます。 –

1
SqlConnection sqlConnection1 = new SqlConnection("Your Connection String"); 
SqlCommand cmd = new SqlCommand(); 
SqlDataReader reader; 

cmd.CommandText = "SELECT * FROM Customers"; 
cmd.CommandType = CommandType.Text; 
cmd.Connection = sqlConnection1; 

sqlConnection1.Open(); 

reader = cmd.ExecuteReader(); 
// Data is accessible through the DataReader object here. 

sqlConnection1.Close(); 

参照のタイプに独自のForEachメソッドを書くことができます:あなたの聖なるだ何の愛(私のためにFSM)についてhttps://msdn.microsoft.com/en-us/library/fksx3b4f.aspx

関連する問題