如何用字符串分隔列表项以保存到文本文件中

本文关键字:保存 文本 文件 何用 字符串 分隔 列表 | 更新日期: 2023-09-27 18:01:23

我正在C#中创建一个Windows窗体应用程序,用于存储有关汽车后备箱销售的详细信息,如日期、地点、推销成本,如果它们是用于慈善等。其中一个规范是,必须能够将一些信息保存到文本文件中,例如将所有汽车后备箱销售保存到carbotsaleall.txt文件中,我还需要一个按钮来保存所有慈善&非慈善汽车后备箱销售到不同的文本文件。

我已经编写了将所有汽车后备箱销售保存到文本文件中的代码,但我不知道如何将其他汽车后备箱销售区分开来,这取决于它们是否用于慈善事业。

这是我在按钮之间保存所有汽车后备箱销售的代码:

        List<CarBootSale> carbootsales = carBootSaleList.ReturnList();
        textReportGenerator.GenerateAllReport(carbootsales, AppData.CARBOOTSALE);
        MessageBox.Show("All Car Boot Sales have been written to the report file: " + AppData.CARBOOTSALE);

这是我在TextReportGenerator类中的代码:

    public void GenerateAllReport<T>(List<T> aList, string filePath) where T : IDisplay
    {
        FileStream outFile;
        StreamWriter writer;
        outFile = new FileStream(filePath, FileMode.Create, FileAccess.Write);
        writer = new StreamWriter(outFile);
        foreach (T obj in aList)
        {
            writer.WriteLine(obj.Display());
        }
        writer.Close();
        outFile.Close();
    }

这是CarBootSale类和构造器等:

public class CarBootSale : IDisplay
{
    public string ID { get; set; }
    public string Date { get; set; }
    public string Location { get; set; }
    public double PitchCost { get; set; }
    public int Capacity { get; set; }
    public string Charity { get; set; }
    public string CharityName { get; set; }
    public string Catering { get; set; }
    public CarBootSale(string id, string date, string location, double pitchcost, int capacity, string charity, string charityname, string catering)
    {
        ID = id;
        Date = date;
        Location = location;
        PitchCost = pitchcost;
        Capacity = capacity;
        Charity = charity;
        CharityName = charityname;
        Catering = catering;
    }

我如何修改TextReportGenerator类中的按钮代码和代码,以便也可以选择将慈善汽车后备箱销售保存到carbotsalecharity.txt

如何用字符串分隔列表项以保存到文本文件中

using System.Linq;
...
foreach (var obj in aList.Where(x -> x.Charity.ToLower() == "yes")
{
    writer.WriteLine(obj.Display());
}

如果您需要更多的泛化(即,您需要它来处理任何T(,请检查Predicate Builder或Dynamic Linq,或者让T继承一个包含Charity的公共接口。