繁体   English   中英

如何使用 C# 读取此文本文件并存储在列表中

[英]How to Read This Text File and store in a list using C#

文本文件数据如下:

S.No    Name        Description Quantity    Rate    Discount    Amount
1       Apple       Friut is    12      24.02       0           242
                    Good for
                    health
2       Orange      Friut       5       12.22       3           128
3       Banana      Friut       5       12.22       3           128
4       Grapes      Friut       5       12.22       3           128

我想在列表中添加所有行和列,但描述列在单个项目中有多个行。 我该如何解决这个问题。 我在这里添加我现有的代码:

我现有的代码如下:

class Program
{
    static void Main(string[] args)
    {
        var dd = File.ReadAllLines(                    
                "C:\\Users\\Trainee\\Desktop\\Saravanan_Test\\27.8.2018\\Inputfile.txt")
                     .Skip(1)
                     .Where(s => s.Length > 1)
                     .Select(x => splits(x)).ToList();

        foreach (var item in dd)
        {
            Console.WriteLine(item.id+"\t" 
                              + item.Name+"\t"
                              + item.Description+"\t"
                              + item.Quantity+"\t"
                              + item.Rate+"\t"
                              + item.Discount+"\t"
                              + item.Amount);
        }

        Console.ReadKey();

    }

    private static Class1 splits(string x)
    {
        var columns = x.Split('\t').Where(c => c != "").ToList();
        return new Class1
        {
            id = Convert.ToInt32(columns[0]),
            Name = columns[1],
            Description = columns[2],
            Quantity = Convert.ToInt32(columns[3]),
            Rate = Convert.ToDouble(columns[4]),
            Discount = Convert.ToInt32(columns[5]),
            Amount = int.Parse(columns[6])
        };
    }
}    

class Class1
{
    public int id { get; set; }
    public string Name { get; set; }
    public String Description { get; set; }
    public int Quantity { get; set; }
    public double Rate { get; set; }
    public int Discount { get; set; }
    public int Amount { get; set; }
}

我想将数据存储到列表中,例如:

list.Add(new{ sno=1, Name="Apple", 
              Description="Friut is good for Health", 
              Quantity=12, Rate=24.02, Discount=0,
              Amount=242 });

提前致谢。

注意:此解决方案基于有问题的共享文件。 数据以空格分隔,不建议使用格式。 回答帮助他拥有内容格式的人。 测试和工作。

static void Main(string[] args)
{
    List<Data> list = new List<Data>();

    var dd = File.ReadAllLines(@"C:\Users\XXXX\Desktop\test.txt")
     .Skip(1)
     .Where(s => s.Length > 1).ToList();

    foreach (var item in dd)
    {
        var columns = item.Split('\t').Where(c => c.Trim() != string.Empty).ToList();

        if (columns != null && columns.Count > 0)
        {
            int id;

            if (int.TryParse(columns[0], out id))
            {
                list.Add(new Data()
                {
                    id = Convert.ToInt32(columns[0]),
                    Name = columns[1],
                    Description = columns[2],
                    Quantity = Convert.ToInt32(columns[3]),
                    Rate = Convert.ToDouble(columns[4]),
                    Discount = Convert.ToInt32(columns[5]),
                    Amount = int.Parse(columns[6])
                });
            }
            else
            {
                list.Last().Description += columns[0];
            }
        }
    }

    Console.ReadLine();
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM