如何在每次通过 LINQ 查询迭代后创建和追加多列列表
本文关键字:创建 追加 列表 迭代 查询 LINQ | 更新日期: 2023-09-27 17:56:00
我正在尝试创建一个列表(我不需要查看列表,临时列表很好),它将有 3 列。当前按下按钮 1,按钮 1.内容存储在列表框 1 中。然后按下按钮 2,并将按钮 2.内容发送到同一个列表框 1。这些按钮有很多,因此此操作可能会发生多次。
在 ListBox1 具有这些按钮(单列)中的内容后,我按 ExportButton,该按钮将 ListBox1 的内容发送到生成列表的 LINQ 查询。
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 发送一行,这一切都很好用,但是如果我发送多行,最后一个查询会覆盖所有以前的数据,这是有道理的。我不知道如何在每次通过 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");
}
我希望对此事有任何帮助或见解。
显然,如果要在 XML 文件中存储多个客户,则需要在 XML 文件中存储多个客户,而不仅仅是一个客户。
在列表框行的循环之外创建PropertyList
,使其包含一个名为 Customers
的元素,然后在每个列表框行迭代中向其添加一个Customer
元素(每个列表框行一个元素)。
然后,在循环结束后,将 XML 保存到文件。
另请注意,在当前代码中,您将一个客户存储在名为 customers 的元素中。这令人困惑。