我正在尝试将sample_data.txt
中的所有数据写入t_sdata.txt
,但可以找到用户在textbox (txt_key)
上输入的字符串的行。
[sample data]
key,item,qty
0001,Apple,5
0002,Orange,10
0003,Grapes,15
因此,如果我在文本框中输入0002
,则t_sdata.txt
应包含:
[sample output data]
key,item,qty
0001,Apple,5
0003,Grapes,15
这就是我现在所拥有的目前无法保存的东西:
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);
}
}
我一直在玩SkipWhile/TakeWhile
位,但我显然做错了。
(不确定是否相关)注意:密钥可以有不同的长度,01可以有不同于001的数据
答案 0 :(得分:7)
您的解决方案看起来很复杂,您并不关心哪一行没有被选中到新文件中:
string plist = @"sample_data.txt";
string tdata = @"t_sdata.txt";
string input = "0002";
File.WriteAllLines(tdata, File.ReadLines(plist).Where(line => !line.StartsWith(input)));
针对您的文件格式稍微更好的解决方案是实际分隔不同的字段,因此02
和5
匹配0220,Test,5
:
File.WriteAllLines(tdata, File.ReadLines(plist)
.Where(line => line.Split(new char[]{ ',' }).First() != input));