2017-11-03 137 views
-2

我正在寻找从两个列的CSV文件存储值,我有以下类ReadFromCSV处理CSV文件的读取,但我有困难使用此列表来显示内容一次按钮被点击。我必须阅读CSV文件的代码如下:从CSV文件读取数据

namespace ELMFS 
{ 
    public class ReadFromCSV 
    { 
     static void ReadCSV(string[] args) 
     { 
      List<TextSpeak> TxtSpk = File.ReadAllLines(@"C:\textwords.csv") 
       .Skip(1) 
       .Select(t => TextSpeak.FromCsv(t)) 
       .ToList(); 
     } 
    } 
    public class TextSpeak 
    { 
     string Abreviated; 
     string Expanded; 


     public static TextSpeak FromCsv(string csvLine) 
     { 
      string[] TxtSpk = csvLine.Split(','); 
      TextSpeak textSpeak = new TextSpeak(); 
      textSpeak.Abreviated = TxtSpk[0]; 
      textSpeak.Expanded = TxtSpk[1]; 
      return textSpeak; 
     } 
    } 
} 

我想显示在消息框中的textSpeak.Abreviated,但似乎无法从WPF window访问它。

如何在应用程序内的其他窗口中使用此列表?

任何意见将不胜感激!

在此先感谢!

回答

1

首先,ReadCSV方法应返回生成的List对象(或者不能在其他地方使用该列表)。

其次,TextSpeak类应该具有属性,以便您可以在类之外访问其成员变量。

I.e.这样的事情应该工作:

namespace ELMFS 
{ 
    public class ReadFromCSV 
    { 
     public static List<TextSpeak> ReadCSV(string[] args) 
     { 
      List<TextSpeak> TxtSpk = File.ReadAllLines(@"C:\textwords.csv") 
       .Skip(1) 
       .Select(t => TextSpeak.FromCsv(t)) 
       .ToList(); 
      return TxtSpk; 
     } 
    } 
    public class TextSpeak 
    { 
     public string Abreviated { get; private set; } 
     public string Expanded { get; private set; } 


     public static TextSpeak FromCsv(string csvLine) 
     { 
      string[] TxtSpk = csvLine.Split(','); 
      TextSpeak textSpeak = new TextSpeak(); 
      textSpeak.Abreviated = TxtSpk[0]; 
      textSpeak.Expanded = TxtSpk[1]; 
      return textSpeak; 
     } 
    } 
} 
-1

你只需要导入类ReadFromCS的命名空间,这是你的情况ELMFS班上WPF窗口是这样的:

using ELMFS; 

接下来,功能ReadCSV需要的属性内部,应该返回一个列表,像这样(和删除未使用的参数):

internal static List<TextSpeak> ReadCSV() { 
       return File.ReadAllLines(@"C:\textwords.csv") 
      .Skip(1) 
      .Select(t => TextSpeak.FromCsv(t)) 
      .ToList(); 

而且使课堂火星文像大众的变量这个:

public string Abreviated; 
public string Expanded;