输出到文件c#
Output to file c#
我正在使用 Apriori 算法来获得强大的规则。到目前为止,我已经把它们放在一个列表框中(程序是在网上找到的)。但是现在我想将输出保存到 txt 文件中。到目前为止,我在 .txt 文件中得到的只有 "AprioriAlgorithm.Rule"。它正在获取正确数量的规则,因此重复“AprioriAlgorithm.Rule 规则数量。例如,如果我有 12 个强规则,我在 txt 文件中得到 12 次 AprioriAlgoritm.Rule。
namespace WPFClient
{
[Export(typeof(IResult))]
public partial class Result : Window, IResult
{
public Result()
{
InitializeComponent();
}
public void Show(Output output)
{
FileStream fs = new FileStream("strongrules.txt", FileMode.Create);
StreamWriter sw = new StreamWriter(fs);
this.DataContext = output;
for (int x = 0; x < output.StrongRules.Count; x++)
{
sw.WriteLine(output.StrongRules[x]);
}
this.ShowDialog();
sw.Close();
}
}
}
这是输出 class。
namespace AprioriAlgorithm
{
using System.Collections.Generic;
public class Output
{
#region Public Properties
public IList<Rule> StrongRules { get; set; }
public IList<string> MaximalItemSets { get; set; }
public Dictionary<string, Dictionary<string, double>> ClosedItemSets { get; set; }
public ItemsDictionary FrequentItems { get; set; }
#endregion
}
}
由于您将 Rule
而不是 string
类型的对象传递给 WriteLine
方法,因此您必须指定要输出的确切内容。
您需要覆盖 Rule
class 的 ToString()
方法才能做到这一点。
public class Rule
{
public string RuleName { get; set; }
public string RuleDescription { get; set; }
public override string ToString()
{
return string.Format("{0}: {1}", RuleName, RuleDescription);
}
}
Writes the text representation of an object by calling the ToString method on that object, followed by a line terminator to the text string or stream.
另一种方法(除了重写 ToString
)是输出单独的属性:
var rule = output.StringRules[x];
sw.WriteLine("{0}: {1}", rule.RuleName, rule.RuleDescription);
或者,使用 C# 的 string interpolation 功能:
sw.WriteLine($"{rule.RuleName}: {rule.RuleDescription}");
如果你不能或不想覆盖 ToString
,你会想使用它。
我正在使用 Apriori 算法来获得强大的规则。到目前为止,我已经把它们放在一个列表框中(程序是在网上找到的)。但是现在我想将输出保存到 txt 文件中。到目前为止,我在 .txt 文件中得到的只有 "AprioriAlgorithm.Rule"。它正在获取正确数量的规则,因此重复“AprioriAlgorithm.Rule 规则数量。例如,如果我有 12 个强规则,我在 txt 文件中得到 12 次 AprioriAlgoritm.Rule。
namespace WPFClient
{
[Export(typeof(IResult))]
public partial class Result : Window, IResult
{
public Result()
{
InitializeComponent();
}
public void Show(Output output)
{
FileStream fs = new FileStream("strongrules.txt", FileMode.Create);
StreamWriter sw = new StreamWriter(fs);
this.DataContext = output;
for (int x = 0; x < output.StrongRules.Count; x++)
{
sw.WriteLine(output.StrongRules[x]);
}
this.ShowDialog();
sw.Close();
}
}
}
这是输出 class。
namespace AprioriAlgorithm
{
using System.Collections.Generic;
public class Output
{
#region Public Properties
public IList<Rule> StrongRules { get; set; }
public IList<string> MaximalItemSets { get; set; }
public Dictionary<string, Dictionary<string, double>> ClosedItemSets { get; set; }
public ItemsDictionary FrequentItems { get; set; }
#endregion
}
}
由于您将 Rule
而不是 string
类型的对象传递给 WriteLine
方法,因此您必须指定要输出的确切内容。
您需要覆盖 Rule
class 的 ToString()
方法才能做到这一点。
public class Rule
{
public string RuleName { get; set; }
public string RuleDescription { get; set; }
public override string ToString()
{
return string.Format("{0}: {1}", RuleName, RuleDescription);
}
}
Writes the text representation of an object by calling the ToString method on that object, followed by a line terminator to the text string or stream.
另一种方法(除了重写 ToString
)是输出单独的属性:
var rule = output.StringRules[x];
sw.WriteLine("{0}: {1}", rule.RuleName, rule.RuleDescription);
或者,使用 C# 的 string interpolation 功能:
sw.WriteLine($"{rule.RuleName}: {rule.RuleDescription}");
如果你不能或不想覆盖 ToString
,你会想使用它。