【问题标题】:Convert Text file to ListCollection and Filter将文本文件转换为 ListCollection 和过滤器
【发布时间】:2016-05-22 06:24:40
【问题描述】:

我有如下数据的文本文件:

    FacilityID:   23
    FacilityName: ACME Medical Center
    Facility Location: 
    RecordID:            1661
    Patient:           Kistra Halos
    Gender:            Female
    DOB:               7/20/1955

我必须读取该文件并转换为 ListCollection 并使用 lambda 或 Linq 方式过滤此 ListCollection

我在 ListCollection 中插入数据并使用 Linq 进行过滤时也做了同样的事情 检查以下:

static void Main(string[] args)
        {

            var PatientList = new List<Patient>();

            PatientList.Add(new Patient() { FacilityID = 23, FacilityName = "Schedule23", FacilityLocation = "M23", RecordID = 11, PatientName = "P23", Gender = "F", DOB = "01-07-1987" }); 



            Console.WriteLine("List Filter LINQ Way:");
            foreach (var v in from p in PatientList
                              where p.PatientName == "P25" && p.FacilityName == "Schedule25"
                              select new { p.PatientName, p.FacilityName })
                Console.WriteLine(v.PatientName + " is " + v.FacilityName);
        } 

【问题讨论】:

    标签: c# .net list c#-4.0 collections


    【解决方案1】:

    您可以简单地使用文件阅读器获取文件并使用 string.split() 将其分解为各个部分。

    using System.IO; //For File
    
    //Take in file
    string file = File.ReadAllText("C:/path/to/file.txt");
    //Split into each facility
    string[] facilities = file.Split(" ======================== ");
    foreach(var facility in facilities)
    {
        //Split by line
        string[] lines = facility.split(new string[] { "\r\n", "\n" }, StringSplitOptions.None);
        //Take each line, split into title & data and remove whitespace
        PatientList.Add(new Patient() {
            FacilityID =        int.Parse(lines[0].Split(":")[1].trim()),
            FacilityName =      lines[1].Split(":")[1].Trim(),
            FacilityLocation =  lines[2].Split(":")[1].Trim(),
            RecordID =          int.Parse(lines[3].Split(":")[1].Trim()),
            PatientName =       lines[4].Split(":")[1].Trim(),
            Gender =            lines[5].Split(":")[1].Trim(),
            DOB =               lines[6].Split(":")[1].Trim() });
    }
    

    这假设您的数据格式与您的示例完全相同,并且文件中没有错误。

    【讨论】:

      猜你喜欢
      • 2017-07-10
      • 2016-08-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-02-20
      • 1970-01-01
      • 2014-11-10
      • 1970-01-01
      相关资源
      最近更新 更多