我从LINQ查询中获得的结果是IEnumerable<T>
类型的var
我想从LINQ的结果创建CSV文件
我正在从以下查询中获取结果
var r = from table in myDataTable.AsEnumerable()
orderby table.Field<string>(para1)
group table by new { Name = table[para1], Y = table[para2] }
into ResultTable
select new
{
Name = ResultTable.Key,
Count = ResultTable.Count()
};
字符串
7条答案
按热度按时间uxhixvfz1#
选中此
字符串
完整代码:Scott Hanselman's ComputerZen Blog - From Linq To CSV
pinkon5k2#
字符串
将产生:
型
ilmyapht3#
这是对Linq2CSV的尖叫:
http://www.codeproject.com/KB/linq/LINQtoCSV.aspx
也可以在nuget上找到:
http://nuget.org/List/Packages/LinqToCsv的
很棒的图书馆,真的很推荐。
dsf9zpds4#
不清楚您真正想要什么,但这可以是一个解决方案public void Read(){
字符串
p5cysglq5#
从你的问题中我可以假设你想要一个 Generic 方法来完成这个任务,而不管T是什么?
事
字符串
您无法克服的问题是,
T
是一个复杂类型,要用逗号分隔T
的每个元素,您需要了解T
的内部结构,或者T
需要知道如何将其自身写为CSV行。这意味着您将需要一个ICSVRow接口,并且需要将T约束到实现ICSVRow的对象。匿名类型。有什么问题就喊。
idfiyjo86#
这是一个基本的解决方案,我正在使用的任何IE浏览器:
字符串
xbp102n07#
其他解决方案没有正确地转义值。@Pranay Rana的特别包括不正确的转义,这可以说是更糟糕的。
这可能有点矫枉过正,但下面的方法将在需要时引用值,可选地允许您选择除了“,"之外的字符串,可选地允许包含头,允许您指定CSV中包含/排除的属性,甚至允许您将这些属性Map到头中的不同文本(如果需要)。
此外,它还尝试检查传入的可枚举对象的类型--因此原始类型的可枚举对象将生成单行CSV,而复杂类型的原始类型将Map其属性。它查看实际对象而不是类型参数来执行此操作,例如,保存复杂类型的
object[]
数组仍将Map属性。字符串