我试图从所有数据都写入sample_data.txt到t_sdata.txt除非通过对用户输入的字符串,该行textbox (txt_key)可以找到.
[sample data]
key,item,qty
0001,Apple,5
0002,Orange,10
0003,Grapes,15
Run Code Online (Sandbox Code Playgroud)
所以如果我0002在文本框中输入,t_sdata.txt应该包含:
[sample output data]
key,item,qty
0001,Apple,5
0003,Grapes,15
Run Code Online (Sandbox Code Playgroud)
这就是我现在所拥有的目前无法保存的东西:
string plist = @"sample_data.txt";
string tdata = @"t_sdata.txt";
var dataline = File.ReadAllLines(plist)
.SkipWhile(l => !l.StartsWith(txt_key.Text))
.TakeWhile(l => !l.StartsWith(txt_key.Text) && l != null);
using (StreamWriter w = File.AppendText(tdata))
{
foreach (var lines in dataline)
{
if (dataline == null)
w.WriteLine(lines);
}
}
Run Code Online (Sandbox Code Playgroud)
我一直在玩,SkipWhile/TakeWhile但我显然做错了什么.
(不确定是否相关)注意:密钥可以具有不同的长度,并且01可以具有与001不同的数据
您的解决方案似乎很复杂,您并不关心哪个行未被选中到新文件中:
string plist = @"sample_data.txt";
string tdata = @"t_sdata.txt";
string input = "0002";
File.WriteAllLines(tdata, File.ReadLines(plist).Where(line => !line.StartsWith(input)));
Run Code Online (Sandbox Code Playgroud)
为您的文件格式,稍微好一点的解决方案是真正分开不同的领域,所以02和5你不匹配0220,Test,5:
File.WriteAllLines(tdata, File.ReadLines(plist)
.Where(line => line.Split(new char[]{ ',' }).First() != input));
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
38 次 |
| 最近记录: |