C# 从表中读取起点和终点,并基于这些点将值写入文本文件
我在下表中有列名及其开始和结束位置C# 从表中读取起点和终点,并基于这些点将值写入文本文件,c#,linq,c#-4.0,C#,Linq,C# 4.0,我在下表中有列名及其开始和结束位置 From To Name 0 25 A 25 30 B 现在我正在写下面的文字 这是写入格式化文本文件的正确方法吗?使用字符串方法PadRight。如果fldA.From始终为零: file.WriteLine("HELLO-A".PadRight(fldA.To) + "HELLOOOO-B".PadRight(fldB.To - fldB.From)); 否则: fi
From To Name
0 25 A
25 30 B
现在我正在写下面的文字
这是写入格式化文本文件的正确方法吗?使用字符串方法PadRight。如果fldA.From始终为零:
file.WriteLine("HELLO-A".PadRight(fldA.To) +
"HELLOOOO-B".PadRight(fldB.To - fldB.From));
否则:
file.WriteLine(new String(' ', fldA.From) +
"HELLO-A".PadRight(fldA.To - fldA.From) +
"HELLOOOO-B".PadRight(fldB.To - fldB.From));
您可以这样做-因此我编写了一个查询放入字典,然后您可以使用name获取密钥,或者将其设置为泛型以转储任何内容:
EnumerableRowCollection<DataRow> rowCollection = dataSet.Tables[0].AsEnumerable();
//Conert to dictionary
var result = (from row in rowCollection
select new
{
From = Convert.ToInt32(row.Field<string>(0)),
To = Convert.ToInt32(row.Field<string>(1)),
Name = row.Field<string>(2)
}).ToDictionary(s => s.Name);
var file = new System.IO.StreamWriter("filepath");
foreach (var data in result)
{
// data.Key is the name in the table
file.WriteLine(string.Format("{0,-" + (data.Value.To - data.Value.From).ToString() + "}"));
}
也许这就是你要找的
var a = tblName.Where(t=>t.name=="A").Single();
var b = tblName.Where(t=>t.name=="B").Single();
using(var writer = new StringWriter(new StreamWriter("path"))){
writer.Write(...);
}
我不知道,你为什么不运行它,看看它是否以你想要的格式写入?@tnw:是的,它工作得很好,但是,这只是我想知道我们如何以更好的方式将txt文件中的值写入特定位置:。定义得更好,我们不知道你在想什么。我不明白这是怎么回事。那么使用填充而不是String.format是否正确?它似乎更容易,可能更快,为什么不呢?
file.WriteLine("HELLO-A".PadRight(fldA.To) +
"HELLOOOO-B".PadRight(fldB.To - fldB.From));
file.WriteLine(new String(' ', fldA.From) +
"HELLO-A".PadRight(fldA.To - fldA.From) +
"HELLOOOO-B".PadRight(fldB.To - fldB.From));
EnumerableRowCollection<DataRow> rowCollection = dataSet.Tables[0].AsEnumerable();
//Conert to dictionary
var result = (from row in rowCollection
select new
{
From = Convert.ToInt32(row.Field<string>(0)),
To = Convert.ToInt32(row.Field<string>(1)),
Name = row.Field<string>(2)
}).ToDictionary(s => s.Name);
var file = new System.IO.StreamWriter("filepath");
foreach (var data in result)
{
// data.Key is the name in the table
file.WriteLine(string.Format("{0,-" + (data.Value.To - data.Value.From).ToString() + "}"));
}
var a = tblName.Where(t=>t.name=="A").Single();
var b = tblName.Where(t=>t.name=="B").Single();
using(var writer = new StringWriter(new StreamWriter("path"))){
writer.Write(...);
}