0

演算子 '!=' はタイプ 'string[]' および 'string' のオペランドには適用できません (はい、同様の質問が以前に尋ねられたことは知っています。1 つを見ましたが、使用されているコンテキスト/要素が異なるタイプだったので、私は'私のケースで助けていただければ幸いです:))

ファイルがあり、ファイル内の「0」で始まる行に到達したらすぐに読み取りを停止したいと考えています。while ループで不等号演算子に問題があります。

private void button1_Click(object sender, EventArgs e)
{
    // Reading/Inputing column values

    OpenFileDialog ofd = new OpenFileDialog();
    if (ofd.ShowDialog() == System.Windows.Forms.DialogResult.OK)
    {

        string[] lines = File.ReadAllLines(ofd.FileName).Skip(8).ToArray();
        textBox1.Lines = lines;

        while (lines != "0") // PROBLEM Happens Here
        {

            int[] pos = new int[3] { 0, 6, 18 }; //setlen&pos to read specific colmn vals
            int[] len = new int[3] { 6, 12, 28 }; // only doing 3 columns right now


            foreach (string line in textBox1.Lines)
            {

                for (int j = 0; j < 3; j++) // 3 columns
                {
                    val[j] = line.Substring(pos[j], len[j]).Trim(); // each column value in row add to array
                    list.Add(val[j]); // column values stored in list

                }

            }

        }
    }
4

2 に答える 2

5

は単一linesではないため、エラーが発生します。ただし、とにかくで始まる最初の行で停止したいと考えています。したがって、次のようにチェックを追加できます。string[]string"0"foreach

foreach (string line in lines)
{
    if(l.StartsWith("0")) break;
    // ...

ただし、代わりにこのメソッドを使用して、関連する行のみを取得します。

var lines = File.ReadLines(ofd.FileName).Skip(8).TakeWhile(l => !l.StartsWith("0"));

違いは、ReadLinesファイル全体を処理する必要がないことです。

于 2013-10-11T16:26:48.007 に答える
2

string[] lines配列であり、 でチェックしてstringます。

次のようになります。

//to check if an element is an empty string
lines[index] != "" 

//to check if the array is null
lines != null 

//to check if the array has any elements
lines.Count() != 0 
lines.Length != 0
于 2013-10-11T16:27:18.647 に答える