DapperのQuery拡張メソッドを型引数ナシまたは型引数dynamicで実行すると、結果はDapper.SqlMapper.DapperRowのコレクションとして取得することになる。このDapperRow型これを単純なDictionary<string, object>
のリストとして渡したい事象に遭遇したので、記述したコードをメモ。
using (var cn = new Microsoft.Data.SqlClient.SqlConnection(connectionString)) { cn.Open(); var resut = cn.Query<dynamic>("SELECT * FROM [dbo].[User]") .Select(x => ((IDictionary<string, object>)x).ToDictionary(k => k.Key, v => v.Value)) .ToList(); // 列名のみ列挙 foreach (var columnName in resut[0].Keys) { Console.Write($"{columnName},"); } Console.WriteLine($""); // 行・列データを列挙 foreach (var rec in resut) { foreach (var key in rec.Keys) { Console.Write($"{rec[key]},"); } Console.WriteLine($""); } }
実行結果例:
UserGUID,Name,BirthDay,SomeId, dd4a05bb-9da7-4981-bde4-2187427ebe2e,aAAAA,2005/03/03 0:00:00,99887, 881b4c15-c6d4-4c7f-b1d9-a1a082bfe64e,いいいい,2011/11/25 0:00:00,99887, 833b8b88-1c97-46f1-94b0-d11bfca73e68,あああ,2001/01/01 0:00:00,99887, 5cdc052f-3c70-4838-8250-fea41651ffa0,CCCCC,1996/02/11 0:00:00,99887,