0

3 つの列を持つリストを作成しようとしています (リストを表示する必要はありません。一時的なリストで問題ありません)。現在、Button1 が押され、Button1.Content が ListBox1 に格納されています。次に Button2 が押され、Button2.Content が同じ ListBox1 に送信されます。これらのボタンは多数あるため、このアクションが何度も発生する可能性があります。
ListBox1 にこれらのボタン (単一列) のコンテンツが含まれた後、ListBox1 のコンテンツを LINQ クエリに送信してリストを生成する ExportButton を押します。

public void SelectPropertyInfo(string Content)
    {
        using (Context con = new Context())
        {
           var query =
                     from o in con.O_TABLEs
                     join p in con.P_TABLEs on o.PN equals p.PN
                     where p.PZ == Content
                     select new
                     {
                         customerFirstName = o.CustomerFirstName,
                         customerLastName = o.CustomerLastName,
                         propertyAddress = p.PropertyAddress
                      };

この時点で、このデータを XML ファイルに送信しています。

XElement PropertyList =
                new XElement("customers",
                            (from q in query.ToList()
                             select new XElement("customer",
                             new XElement("CustomerFirstName", q.customerFirstName),
                             new XElement("CustomerLastName", q.customerLastName),
                             new XElement("Address", q.propertyAddress))));
PropertyList.Save("S:/customers.xml");
       }
}

ListBox1 から 1 つの行を送信する限り、これはすべてうまく機能しますが、複数の行を送信すると、最後のクエリによって以前のデータがすべて上書きされます。これは理にかなっています。LINQ クエリを使用して各反復後にデータを格納する方法がわかりません。ListBox1 からの各行が送信された後にデータを保存する必要があることを知っており、ListBox1 からのすべての行が送信された後、データを XML ファイルに送信したいと考えています。これを達成する別の方法は、LINQ クエリからデータを送信できるメソッドを作成することだと思いましたが、LINQ クエリが実行されるたびにデータを格納する方法はまだわかりません。

public void CreateXMLList (string CustomerFirstName, string CustomerLastName, string  PropertyAddress)           
       {
         XElement PropertyList = new XElement("customers",
                                 new XElement("CustomerFirstName", CustomerFirstName),
                                 new XElement("CustomerLastName", CustomerLastName),
                                 new XElement("Address", PropertyAddress));

            PropertyList.Save("S:/customers.xml");
       }

この件に関するご支援やご意見をいただければ幸いです。

4

1 に答える 1

0

明らかに、複数の顧客を XML ファイルに保存する場合は、1 つの顧客だけでなく、複数の顧客を XML ファイルに保存する必要があります。

リストボックス行のループの外側に作成し、 とPropertyList呼ばれる1 つの要素を含め、各リストボックス行反復でCustomers1 つの要素を追加Customerします (リストボックス行ごとに 1 つの要素)。

次に、ループが終了したら、XML をファイルに保存します。

また、現在のコードでは、 customersという要素に 1 人の顧客を格納していることに注意してください。それは紛らわしいです。

于 2013-01-25T23:23:50.753 に答える