Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/313.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 以csv格式从csv文件中提取特定列_C#_.net_Winforms_Csv - Fatal编程技术网

C# 以csv格式从csv文件中提取特定列

C# 以csv格式从csv文件中提取特定列,c#,.net,winforms,csv,C#,.net,Winforms,Csv,我需要提取特定列的数据从CSV文件和输出也应该是一个CSV格式。 我已经讨论过很多从CSV中提取数据的解决方案,但是没有一个提到以CSV格式提取数据 例如: public partial class Form1 : Form { public Form1() { InitializeComponent(); string filePath = "abc.csv";

我需要提取特定列的数据从CSV文件和输出也应该是一个CSV格式。 我已经讨论过很多从CSV中提取数据的解决方案,但是没有一个提到以CSV格式提取数据

例如:

 public partial class Form1 : Form
        {
            public Form1()
            {
                InitializeComponent();

                string filePath = "abc.csv";

                string csvContnet = File.ReadAllText(filePath);

                // E.g. Suppose above csv has 9 columns
                // And column headers are from A,B,C...I
                // Now I want to select data from columheaders B,C and F along with header
                string requiredCsvContent = this.GetRequiredCsvContent(csvContnet);
            }

            /// <summary>
            /// Following function returns required CSV content from main csv File
            /// </summary>
            /// <param name="csvContnet"></param>
            /// <returns></returns>
            private string GetRequiredCsvContent(string csvContnet)
            {

            }}
公共部分类表单1:表单
{
公共表格1()
{
初始化组件();
字符串filePath=“abc.csv”;
字符串csvContnet=File.ReadAllText(文件路径);
//例如,假设上述csv有9列
//列标题来自A,B,C…I
//现在我想从标题B、C和F以及标题中选择数据
string requiredCsvContent=this.GetRequiredCsvContent(csvcontent);
}
/// 
///以下函数从主CSV文件返回所需的CSV内容
/// 
/// 
/// 
私有字符串GetRequiredCsvContent(字符串CsvContent)
{
}}

您的数据看起来像一个TSV(制表符分隔值)文件。只需将整个内容复制到剪贴板并粘贴到Excel中即可。然后,删除除D、E和F之外的所有列。最后,转到文件>另存为>CSV。

我建议您使用
File.ReadLines
File.ReadAllLines
,这样您就可以轻松地使用
LINQ
获得所需内容:

var lines = File.ReadLines("asd")
              .Skip(1) // header
              .Select(line =>
              {
                  var parts = line.Split(',');
                  return string.Join(",", parts[1], parts[2], parts[5]);
              }).ToList();

它应该以逗号分隔的格式返回
A
B
F
列。

如果我读得正确,您想从列B、C和F中提取标题和数据,并将输出放在字符串中的CSV格式中吗?试试这个,使用(完全公开,我是它的作者):


强烈建议不要使用
Split()
Join()
来处理CSV。它将在非琐碎数据上中断。

您能发布一个示例吗?请浏览编辑您能澄清示例吗?您有9个标题(A->I),但只有7列?从上面删除了不需要的标题example@Nilesh输出的格式应该是什么?哈哈,这个答案很简单,很巧妙,很有趣
var data = from row in IdComLog.Data.Formats.Csv.ReadRecords("inputFile.csv")
           select new[]{ row[1].Value, row[2].Value, row[5].Value }

var sw = new StringWriter();
IdComLog.Data.Formats.Csv.Write(sw, data);

string requiredCsvContent = sw.ToString();