C#修改列表指定项或指定元素的值

引言:当混子久了基础也不会了哈哈,记性不好的我还是记录下修改方式吧,不然想了一堆方法都没达到目的

 

1、首先是修改符合条件的第一个元素的值(方式1为修改所有符合条件的元素)

/// <summary>
/// 示例:修改列表符合条件第一个元素的值
/// </summary>
/// <returns>返回示例结果</returns>
public string ModifyClass()
{
    string message1 = "修改前:(默认方式2不显示修改前)";
    List<string> ExamleList = new List<string>()
    {
        "1", "2", "3"
    };
    #region  方式1
    //ExamleList.ForEach(t =>
    //{
    //    message1 += "\r\n" + t;
    //    if (t == "2") t = "222";
    //});
    #endregion
    #region  方式2
    int indexEX = ExamleList.IndexOf("2");
    ExamleList.RemoveRange(indexEX, 1);//ExamleList.Remove("2");
    ExamleList.Insert(indexEX, "222");
    #endregion
    message1 += "\r\n\r\n修改后:";
    ExamleList.ForEach(t =>
    {
        message1 += "\r\n" + t;
    });
    return message1;
}
View Code

 

2、接着是修改列表符合条件第一个单项的属性

/// <summary>
/// 示例类
/// </summary>
public class ExamplesClass
{
    private int id;

    private string value1;

    public int ID
    {
        get { return id; }
        set { id = value; }
    }

    public string Value
    {
        get { return value1; }
        set { value1 = value; }
    }
}


/// <summary>
/// 示例:修改列表符合条件第一个单项的属性
/// </summary>
/// <returns>返回示例结果</returns>
public string ModifyClass1()
{
    string message1 = "修改前:";
    List<ExamplesClass> EC = new List<ExamplesClass>()
    {
        new ExamplesClass(){ ID = 1, Value = "1"},
        new ExamplesClass(){ ID = 2, Value = "2"},
        new ExamplesClass(){ ID = 3, Value = "3"}, 
    };
    foreach (ExamplesClass ec in EC)  //遍历修改前的列表
    {
        message1 += "\r\n" + ec.Value;
    }
    #region  更简单的修改方式
    //EC.ForEach(t =>
    //{
    //    if (t.ID == 2)
    //        t.Value = "222";
    //});
    #endregion
    #region  酱紫很麻烦
    var modifyEC = EC.Where(t => t.ID == 2).ToList();  //获取符合修改条件的项
    if (modifyEC.Count() != 0)  //获取到修改项不为空
    {
        //modifyEC.FirstOrDefault().Value = "22";
        modifyEC[0].Value = "22";
    }
    else Thread.Sleep(1);
    #endregion
    message1 += "\r\n\r\n修改后:";
    EC.ForEach(t =>  //遍历修改后的列表
    {
        message1 += "\r\n" + t.Value;
    });
    return message1;
}
View Code

 

3、再来是修改列表符合条件一个片段的属性

/// <summary>
/// 示例类
/// </summary>
public class ExamplesClass
{
    private int id;

    private string value1;

    public int ID
    {
        get { return id; }
        set { id = value; }
    }

    public string Value
    {
        get { return value1; }
        set { value1 = value; }
    }
}


/// <summary>
/// 示例:修改列表符合条件一个片段的属性
/// </summary>
/// <returns>返回示例结果</returns>
public string ModifyClass2()
{
    string message1 = "修改前:";
    List<ExamplesClass> EC = new List<ExamplesClass>()
    {
        new ExamplesClass(){ ID = 1, Value = "1"},
        new ExamplesClass(){ ID = 2, Value = "2"},
        new ExamplesClass(){ ID = 3, Value = "3"},
        new ExamplesClass(){ ID = 4, Value = "4"},
        new ExamplesClass(){ ID = 5, Value = "5"}
    };
    List<ExamplesClass> modifyEC = new List<ExamplesClass>()
    {
        new ExamplesClass(){ ID = 3, Value = "333"},
        new ExamplesClass(){ ID = 4, Value = "444"}
    };
    foreach (ExamplesClass ec in EC)  //遍历修改前的列表
    {
        message1 += "\r\n" + ec.Value;
    }
    int modifyIndex = EC.IndexOf(EC.Where(t => t.ID == 3).ToList()[0]);  //从ID为3的位置开始修改2个项
    EC.RemoveRange(modifyIndex, 2);  //移除从指定开始的2个项
    EC.InsertRange(modifyIndex, modifyEC);  //从指定位置插入新的列表
    message1 += "\r\n\r\n修改后:";
    EC.ForEach(t =>  //遍历修改后的列表
    {
        message1 += "\r\n" + t.Value;
    });
    return message1;
}
View Code

 

记下来就不怕忘了哈哈哈

posted @ 2022-04-16 16:22  青丝·旅人  阅读(4149)  评论(0编辑  收藏  举报