我有一个 9列的CSV文件。 (Date,DrawNumber,N1,N2,N3,N4,N5,N6,B1)
上面的列下面是 55行的数据。
行中的数据由(,)分隔符分隔。
1)在控制台应用程序中,用户将输入将存储的6/7数字。
2。)如何读取CSV数据并将其保存到数组中,这样我可以计算每个数字(在用户输入的6或7个数字集中)被发现了多少次CSV(来自这些列:N1,N2,N3,N4,N5,N6,B1)。例如:数字33 =被发现12次,数字14被发现11次,...(以此类推,对于其余输入的数字)
3。)从用户要输入的6或7个数字中,我还必须查看(用户输入的)数字与CSV的每行相匹配。换句话说,我必须匹配每行的组合(N1,N2,N3,N4,N5,N6,B1)
读取和存储数据以进行此类数据处理的最佳方法是什么? (您的示例代码将不胜感激)?
谢谢。
CSV数据示例:
答案 0 :(得分:0)
创建一个与列匹配的类 因此,假设9列意味着9个属性。
public class CsvData
{
public string column1 { get; set; }
public string column2 { get; set; }
public string column3 { get; set; }
public string column4 { get; set; }
public string column5 { get; set; }
public string column6 { get; set; }
public string column7 { get; set; }
public string column8 { get; set; }
public string column9 { get; set; }
}
现在最好避免将csv文件映射到CsvData对象的列表中
public List<CsvData> ReadCsv(string file)
{
List<CsvData> collection = new List<CsvData>();
using (var streamReader = new StreamReader(file))
{
while (!streamReader.EndOfStream)
{
string[] columns = streamReader.ReadLine().Split(';');
CsvData data = new CsvData();
data.column1 = columns[0];
data.column2 = columns[1];
data.column3 = columns[2];
data.column4 = columns[3];
data.column5 = columns[4];
data.column6 = columns[5];
data.column7 = columns[6];
data.column8 = columns[7];
data.column9 = columns[8];
collection.Add(data);
}
}
return collection;
}
现在用于计算包含数字或术语的行
public int CountRowsWithTerm(List<CsvData> collection, string term)
{
List<CsvData> RowsContainingTheTerm = collection.Where(row => row.column1 == term || row.column2 == term || row.column3 == term ||
row.column4 == term || row.column5 == term || row.column6 == term ||
row.column7 == term || row.column8 == term || row.column9 == term).ToList();
return RowsContainingTheTerm.Count();
}
希望这对您有帮助