基于条件更新c#中的对象
本文关键字:对象 更新 于条件 条件 | 更新日期: 2023-09-27 18:27:37
我在这里有这个对象:
public class ServiceConfig
{
public List<DatabaseDescriptor> Databases { get; set; }
}
public class DatabaseDescriptor
{
[XmlElement("Name")]
public string Name { get; set; }
public List<Table> Tables { get; set; }
}
public class Table
{
[XmlElement("ID")]
public string ID { get; set; }
[XmlElement("TableName")]
public string TableName { get; set; }
}
我有
public xml.ServiceConfig xmlData { get; set; }
如何更新xmlData DatabaseDescriptors,其中name==test即如何更新?
序列化回XML
XmlSerializer serializer = new XmlSerializer(typeof(xml.ServiceConfig));
using (TextWriter writer = new StreamWriter(@"C:'Xml.xml"))
{
serializer.Serialize(writer, ServiceConfig);
}
如果名称是唯一的
using System.Linq;
DatabaseDescriptor db = xmlData.Databases.SingleOrDefault(db => db.name == "test");
if (db != null)
{
//Update db instance
}
其他
var dbs = xmlData.Databases.Where(db => db.name == "test");
foreach (DatabaseDescriptor element in dbs)
{
// Update elements
}
如果要在xml数据库属性中序列化/反序列化,则必须使用[XmlArray]、进行装饰
您可以看到反序列化XML不会填充数组
尝试:
DatabaseDescriptor updateObject = xmlData.Databases.FirstOrDefault(_d => _d.Name.Equals("Test"));
if(updateObject != null)
{
// update what you want to update...
}