0

私はsting []を繰り返し、条件「含む」を尊重するレコードのみを取得しようとしています。

私はこれを試してきました:

var lines = File.ReadAllLines("C:\\temp\\" + ReportPushFile("fileToSend_1.txt")).Where(i => i.Contains("BILL")); 

しかし、これにより、フィルタリングなしですべてのレコードが再び返されます。どうしたの?

class Program : Logger
{
    public static FTPclient Ftp = new FTPclient("ftp://smsftp.mobyt.it/", "C17053_004", "i7z0dx5b");

    static void Main(string[] args)
    {
        List<Sms> sms = new List<Sms>();
        sms.Add(new Sms() {  recipient = "+393664528452" });

        var lines = File.ReadAllLines("C:\\temp\\" + ReportPushFile("fileToSend_1.txt")).Where(i => i.StartsWith("BILL"));

        // ...
    }

    public static string ReportPushFile(string NomeFile)
    {
        try
        {
            String LocalFileName = Ftp.ListDirectory("/reports/").Where(f => f.Contains(NomeFile)).OrderBy(x => new FileInfo(x).CreationTime).Max();
            Ftp.Download("/reports/" + LocalFileName, "c:\\temp\\" + LocalFileName, true);

            return LocalFileName;
        }
        catch(Exception ex)
        {
            return string.Empty;
        }
    }
}
4

1 に答える 1

1

コードが機能するはずです。それを分割して、型を明示的にしましょう:

string path = "C:\\temp\\" + ReportPushFile("fileToSend_1.txt");

string[] readLines = File.ReadAllLines(path);

IEnumerable<string> lines = readLines.Where(i => i.Contains("BILL"));

これで、いくつかのデバッグ ポイントを設定して、次のことを確認できます。

  1. readLines行のリストが含まれています。
  2. linesを含む行のみが含まBILLれます。
于 2013-03-01T14:12:18.997 に答える