【问题标题】:Select row from List<string> where matches从 List<string> 中选择匹配的行
【发布时间】:2013-03-14 20:57:45
【问题描述】:

我有以下List&lt;string&gt;

List&lt;string&gt; RFD = new List&lt;string&gt;(File.ReadAllLines("FDIASNC"));

它正在读取的文件是这样的:

000821031300000000080
001921031300000000080
004221031300000000080
008121031300000000080
009321031300000000080
011221031300000000080
012221031300000000080
0128200313010000330790000033
207721031300000000080

所以我想要的是找到一个匹配并选择这一行,例如,如果我想读取“0128”的行,它将手动为 RFD[7],但我想搜索该行并输出该行用于操纵...有什么想法吗?

谢谢。

编辑

我一发帖就找到了,我是个笨蛋呵呵...谢谢你的回答,10分钟后我会选择一个作为正确的:)

【问题讨论】:

  • if (t.Any(o => o.Contains("yourvalue")))?

标签: c# string list search


【解决方案1】:

您可以使用 LINQ 进行搜索:

var line = File.ReadAllLines("FDIASNC")
               .FirstOrDefault(line => line.StartWith("0128"));

if (line != null)
{
    //Do something with this line
}

您无需创建List&lt;string&gt;,因为ReadAllLines 返回IEnumerable&lt;string&gt;

如果您的文件很大,您可能会考虑使用ReadLines 的延迟执行,而不是将所有行都加载到内存中

【讨论】:

    【解决方案2】:

    试试这个:

    string line = RFD.FirstOrDefault(line => line.StartsWith("0128"));
    

    如果没有以 0128 开头的行,则该行为空

    【讨论】:

      【解决方案3】:

      这样的?

      using System.Linq;
      
      // later in your program...
      
      foreach (string match in RFD.Where(l => l.StartsWith("0128"))) {
          Console.WriteLine(match);
      }
      

      【讨论】:

        【解决方案4】:

        如果您想准确选择符合您条件的一行,请使用FirstSingle LINQ 扩展方法。例如:

        string str = RFD.First(line => line.StartWith("0128"));
        

        返回0128200313010000330790000033字符串

        【讨论】:

          【解决方案5】:
           RFD.Where(r=>r.Contains("0128")).FirstOrDefault()
          

          【讨论】:

            猜你喜欢
            • 2010-12-20
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2021-09-14
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多