Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/linq/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 从表中读取起点和终点,并基于这些点将值写入文本文件_C#_Linq_C# 4.0 - Fatal编程技术网

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(...);
}