2013-02-27 41 views
0

我創建在C#中關於汽車銷售引導店面的詳細信息,如日期,地點,螺距成本Windows窗體應用程序,如果他們爲慈善事業其中一個規範是必須有能力保存一些信息到文本文件,如所有的汽車啓動銷售保存到carbootsaleall.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與construtor等類:

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類代碼,還可以選擇保存慈善汽車啓動銷售carbootsalecharity.txt

+0

你如何區分慈善和不慈善? – vlad 2013-02-27 21:58:53

+0

@vlad在慈善字符串中,它會在窗體中表示「是」或「否」。 – Danny 2013-02-27 22:01:20

+0

雖然我確信這是有效的,但您可能需要爲此考慮一個「布爾」。 – vlad 2013-02-27 22:03:27

回答

2
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的公共接口。

+0

嗯,我似乎有3個錯誤彈出說:「這個名字‘X’並不在當前的背景下存在」,「System.Collections.Generic.List '不包含定義‘在哪裏’和最佳推廣方法重載「System.Linq.Enumerable.Where (System.Collections.Generic.IEnumerable ,System.Func )」具有一些無效參數「和」參數2:無法從‘布爾’轉換爲'System.Func '' – Danny 2013-02-27 22:13:21

+0

@Danny:顯示導致錯誤的代碼行。 – 2013-02-27 22:17:40

+0

@RobertHarvey這一切都指向這部分「aList.Where(X - > x.Charity.ToLower()==‘是’))」 – Danny 2013-02-27 22:19:39

相關問題