Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/314.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 编写列表的内容<;字符串>;输入到文本文件中_C# - Fatal编程技术网

C# 编写列表的内容<;字符串>;输入到文本文件中

C# 编写列表的内容<;字符串>;输入到文本文件中,c#,C#,我有一个程序,检查两个文本文件中的一个特定字段,然后检查其中一个文件是否有指定字段。如果匹配,则匹配数存储到另一个列表中。我遇到的问题是,当我知道我有两个匹配项时,它只将第一个匹配项写入文本文件。我是C#的新手,因此如果您有任何帮助/建议,我将不胜感激,下面的代码正在进行检查 while ((lineBeingRead = fileToRead.ReadLine()) != null) { if (lineBeingRead.IndexOf(" :22:", 0) == 0)

我有一个程序,检查两个文本文件中的一个特定字段,然后检查其中一个文件是否有指定字段。如果匹配,则匹配数存储到另一个列表中。我遇到的问题是,当我知道我有两个匹配项时,它只将第一个匹配项写入文本文件。我是C#的新手,因此如果您有任何帮助/建议,我将不胜感激,下面的代码正在进行检查

while ((lineBeingRead = fileToRead.ReadLine()) != null)
{
    if (lineBeingRead.IndexOf("       :22:", 0) == 0)
    {
        lstTwentyOneCounter.Add(lineBeingRead.Substring(11));
        lstStoreTwentyOne = lstTwentyOneCounter;
    }
}
下面的代码正在写入文本文件

foreach (var single103 in lstStore103)
{
    foreach (var single101 in lstStore101)
    {
        if (single101 == single103)
        {
            checkResults.Add(single103);
            System.IO.File.WriteAllText(@"H:\Compare.txt", single103);
            break;
        }
    }
}
谢谢,

Ryan

破发负责,它将离开循环。 但是您也不希望使用重写整个文本文件的
writealText
,而是希望附加一行新行。我将采用这种方法:

string startPattern = "       :22:";
List<string> lstStoreTwentyOne = File.ReadLines(path)
    .Where(l => l.StartsWith(startPattern))
    .Select(l => l.Substring(startPattern.Length))
    .ToList();

中断负责,它将离开循环。
但是您也不希望使用重写整个文本文件的
writealText
,而是希望附加一行新行。我将采用这种方法:

string startPattern = "       :22:";
List<string> lstStoreTwentyOne = File.ReadLines(path)
    .Where(l => l.StartsWith(startPattern))
    .Select(l => l.Substring(startPattern.Length))
    .ToList();

WriteAllText
将删除现有文件,因此只会显示一个条目被写入

你会想要或者相反

或者(如果
lstStore103
lstStore101
都没有重复项):


WriteAllText
将删除现有文件,因此只会显示一个条目被写入

你会想要或者相反

或者(如果
lstStore103
lstStore101
都没有重复项):


请看:请看:谢谢你修复了它,我知道它需要重构和清理,但现在它可以工作了,所以我很高兴:)@RyanK一定要对Tim的答案投赞成票(他帖子左侧的向上箭头)。谢谢你修复了它,我知道它需要重构和更干净,但现在它可以工作了,所以我很高兴:)@RyanK一定要对Tim的答案投赞成票(他帖子左侧的向上箭头)。谢谢你的回复,Tim,这真的很有帮助,我已经接受了mjwillis作为答案,因为现在这可以满足我的需要,但当我来重构代码时,我肯定会使用你的答案,再次感谢你的帮助。谢谢你的回复Tim,这真的很有帮助,我已经接受了mjwillis作为答案,因为现在这可以满足我的需要,但当我来重构代码时,我肯定会使用你的答案,再次感谢你的帮助。
System.IO.File.Delete(@"H:\Compare.txt");

foreach (var single103 in lstStore103)
{
    foreach (var single101 in lstStore101)
    {
        if (single101 == single103)
        {
            checkResults.Add(single103);
            System.IO.File.AppendAllText(@"H:\Compare.txt", single103 + Environment.NewLine);
        }
    }
}
System.IO.File.Delete(@"H:\Compare.txt");

foreach (var value in lstStore103.Intersect(lstStore101))
{
    checkResults.Add(value);
    System.IO.File.AppendAllText(@"H:\Compare.txt", value + Environment.NewLine);
}