基于条件更新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);
            } 

基于条件更新c#中的对象

如果名称是唯一的

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...
}