Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/315.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/loops/2.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# 等待string.contains()条件满足_C#_Loops - Fatal编程技术网

C# 等待string.contains()条件满足

C# 等待string.contains()条件满足,c#,loops,C#,Loops,我正在向我的C#应用程序读取一个文件,并使用gzip流解压缩一个tile#u数据块。我目前正在通过以下方法访问BLOB数据: SQLiteCommand command = new SQLiteCommand(query, DbConn); SQLiteDataReader reader = command.ExecuteReader(); bool isMet = false; while (reader.Read()) { using (var file = reader.GetSt

我正在向我的C#应用程序读取一个文件,并使用gzip流解压缩一个tile#u数据块。我目前正在通过以下方法访问BLOB数据:

SQLiteCommand command = new SQLiteCommand(query, DbConn);
SQLiteDataReader reader = command.ExecuteReader();
bool isMet = false;
while (reader.Read())
{
    using (var file = reader.GetStream(0))
    using (var unzip = new GZipStream(file, CompressionMode.Decompress))
    using (var fileReader = new StreamReader(unzip))
    {
        var line = fileReader.ReadLine();
        while (!fileReader.EndOfStream)
        {

        }
        Console.WriteLine("End of tile_data");
     }
}
reader.Close();
Console.WriteLine("Reader closed");
Console.ReadKey();
}
catch (Exception e)
{
    Console.Write(e.StackTrace);
    Console.ReadKey();
}
我希望等到
文件阅读器
检测到
“第三方”
(字符串)之后再打印所有数据。我试图使用
bool
和嵌套的
while循环
,但它作为一个无限循环返回,因此产生了这个问题

我使用的代码(失败的代码):


满足条件后,如何仅使用我的
文件读取器执行操作?

var line=fileReader.ReadLine()是否在while循环中

while (!fileReader.EndOfStream)
{
     var line = fileReader.ReadLine();
     // do some other stuff
}

var line=fileReader.ReadLine()是否在while循环中

while (!fileReader.EndOfStream)
{
     var line = fileReader.ReadLine();
     // do some other stuff
}

只有当流只有一行时,
fileReader.EndOfStream
循环才会工作。问题是,你只能从流中读取一次——因此,除非你已经阅读了全部内容,否则你将处于一个无止境的循环中

相反,可以这样做:

string line;

while ((line = fileReader.ReadLine()) != null)
{
  if (line.Contains("...")) break; // Or whatever else you want to do
}

只有当流只有一行时,
fileReader.EndOfStream
循环才会工作。问题是,你只能从流中读取一次——因此,除非你已经阅读了全部内容,否则你将处于一个无止境的循环中

相反,可以这样做:

string line;

while ((line = fileReader.ReadLine()) != null)
{
  if (line.Contains("...")) break; // Or whatever else you want to do
}

您可以使用此代码。它可以在字符串中找到任何字符。它对我有用

string matchStr = "tertiary";
                if (line.Any(matchStr.Contains)
                            {
                                isMet = true;
                            }
                            while (!fileReader.EndOfStream && isMet)
                            {
                                Console.WriteLine(line);
                            }

您可以使用此代码。它可以在字符串中找到任何字符。它对我有用

string matchStr = "tertiary";
                if (line.Any(matchStr.Contains)
                            {
                                isMet = true;
                            }
                            while (!fileReader.EndOfStream && isMet)
                            {
                                Console.WriteLine(line);
                            }

试试这样的

var yourval;
var secval = fileReader.ReadLine()

while ((yourval = secval ) != null)
{
   if (line.Contains("your string here")) 
   {
      break;
   }
}

试试这样的

var yourval;
var secval = fileReader.ReadLine()

while ((yourval = secval ) != null)
{
   if (line.Contains("your string here")) 
   {
      break;
   }
}

哎呀,这是以前的事,但我想我在这里发布之前忘了把它移回去,我在测试一些东西。谢谢:)哦,这是以前的,但我想我在这里发布之前忘了把它移回去,我正在测试一些东西。谢谢:)检查答案。告诉我它是否对你有效。在你的while循环中,你没有阅读/处理文件阅读器,因此你永远不会到达流的末尾,你的while将是无限的。您应该在while中附上一个“line=fileReader.ReadLine()”以继续阅读。检查答案。告诉我它是否对你有效。在你的while循环中,你没有阅读/处理文件阅读器,因此你永远不会到达流的末尾,你的while将是无限的。您应该在while中包含一个“line=fileReader.ReadLine()”,以便继续阅读。