List怎么追加数据

时间:2021-08-27 19:36:46
list数据格式例如:rows=[{"id":"1" ,"Name": "张三"},{"id":"2" ,"Name": "李四"}]
 foreach (var row in rows){根据row.id得到age追加到row里面},最终rows效果:[{"id":"1" ,"Name": "张三","age":"25"},{"id":"2" ,"Name": "李四","age":"35"}]

14 个解决方案

#1


你这是json,和list有什么关系,就算是从json转换,你这个顶多也是往hasttable/dictionary里添加数据
比如row["age"] = "25";这样的

#2


反序列化json字符串,然后for循环赋值,再反序列化
如果在js里面这个操作就简单了,直接循环赋值

#3


foreach循环,不能改变循环体的值吧.

最好用for

#4


namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            string jsonString = "[{\"id\":\"1\" ,\"Name\": \"张三\"},{\"id\":\"2\" ,\"Name\": \"李四\"}]";
            Person[] persons = JsonConvert.DeserializeObject<Person[]>(jsonString);

            persons.FirstOrDefault(p => p.Name == "张三").age = "25";
            persons.FirstOrDefault(p => p.Name == "李四").age = "35";

            foreach (Person person in persons)
            {
                Console.WriteLine(string.Join("--",person.id,person.Name,person.age));
            }
        }
    }

    public class Person
    {
        public string id { get; set; }
        public string Name { get; set; }
        public string age { get; set; }
    }
}

#5


引用 4 楼 guwei4037 的回复:
namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            string jsonString = "[{\"id\":\"1\" ,\"Name\": \"张三\"},{\"id\":\"2\" ,\"Name\": \"李四\"}]";
            Person[] persons = JsonConvert.DeserializeObject<Person[]>(jsonString);

            persons.FirstOrDefault(p => p.Name == "张三").age = "25";
            persons.FirstOrDefault(p => p.Name == "李四").age = "35";

            foreach (Person person in persons)
            {
                Console.WriteLine(string.Join("--",person.id,person.Name,person.age));
            }
        }
    }

    public class Person
    {
        public string id { get; set; }
        public string Name { get; set; }
        public string age { get; set; }
    }
}


能有更简单的方法吗 例如:List<T>.Add 方法

#6


引用 楼主 gb19900526 的回复:
list数据格式例如:rows=[{"id":"1" ,"Name": "张三"},{"id":"2" ,"Name": "李四"}]
 foreach (var row in rows){根据row.id得到age追加到row里面},最终rows效果:[{"id":"1" ,"Name": "张三","age":"25"},{"id":"2" ,"Name": "李四","age":"35"}]


虽然是json数据 ,转换到list里面操作的

#7


引用 2 楼 starfd 的回复:
反序列化json字符串,然后for循环赋值,再反序列化
如果在js里面这个操作就简单了,直接循环赋值

这是在后台操作的,试过List<T>.Add、List<T>.Insert 方法,但是没达到想要的效果

#8


给你一个扯淡的不建议做法
Dictionary<string, string> dic = new Dictionary<string, string>()
{
    {"1","\"25\""},
    {"2","\"35\""}
};
string jsonString = "[{\"id\":\"1\" ,\"Name\": \"张三\"},{\"id\":\"2\" ,\"Name\": \"李四\"},{\"id\":\"3\" ,\"Name\": \"王五\"}]";
string patten = @"""id"":""([^""]*)"".*?(?=})";
Console.WriteLine(Regex.Replace(jsonString, patten, m =>
{
    string v;
    if (dic.TryGetValue(m.Groups[1].Value, out v))
    {
        return string.Format("{0},\"Age\": {1}", m.Value, v);
    }
    return m.Value;
}));

#9


引用 3 楼 liuqian4243 的回复:
foreach循环,不能改变循环体的值吧.

最好用for

修改值可以,例如row.name的值都可以改,就是不知道怎么在后面追加

#10


引用 8 楼 starfd 的回复:
给你一个扯淡的不建议做法
Dictionary<string, string> dic = new Dictionary<string, string>()
{
    {"1","\"25\""},
    {"2","\"35\""}
};
string jsonString = "[{\"id\":\"1\" ,\"Name\": \"张三\"},{\"id\":\"2\" ,\"Name\": \"李四\"},{\"id\":\"3\" ,\"Name\": \"王五\"}]";
string patten = @"""id"":""([^""]*)"".*?(?=})";
Console.WriteLine(Regex.Replace(jsonString, patten, m =>
{
    string v;
    if (dic.TryGetValue(m.Groups[1].Value, out v))
    {
        return string.Format("{0},\"Age\": {1}", m.Value, v);
    }
    return m.Value;
}));

追加的值不止一个,有没有什么方法得到里面的位置索引,直接插入数据

#11


后面追加什么就看你了啊,在if判断里面已经找到那一段json了,你可以认为这个就是你想要的索引位置

#12


先转成list,再追加,追加完再转回json啊
不要老企图直接在json里加数据,那就是在操作字符串了,麻烦死

#13


引用 12 楼 Z65443344 的回复:
先转成list,再追加,追加完再转回json啊
不要老企图直接在json里加数据,那就是在操作字符串了,麻烦死


是转成list操作的,但是不知道怎么追加在指定位置

#14


引用 11 楼 starfd 的回复:
后面追加什么就看你了啊,在if判断里面已经找到那一段json了,你可以认为这个就是你想要的索引位置


按你的做很麻烦,我是想找个比较简单的方法直接插入数据,例如List<T>.Add(new {age = "25“ });这种比较快捷直接的

#1


你这是json,和list有什么关系,就算是从json转换,你这个顶多也是往hasttable/dictionary里添加数据
比如row["age"] = "25";这样的

#2


反序列化json字符串,然后for循环赋值,再反序列化
如果在js里面这个操作就简单了,直接循环赋值

#3


foreach循环,不能改变循环体的值吧.

最好用for

#4


namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            string jsonString = "[{\"id\":\"1\" ,\"Name\": \"张三\"},{\"id\":\"2\" ,\"Name\": \"李四\"}]";
            Person[] persons = JsonConvert.DeserializeObject<Person[]>(jsonString);

            persons.FirstOrDefault(p => p.Name == "张三").age = "25";
            persons.FirstOrDefault(p => p.Name == "李四").age = "35";

            foreach (Person person in persons)
            {
                Console.WriteLine(string.Join("--",person.id,person.Name,person.age));
            }
        }
    }

    public class Person
    {
        public string id { get; set; }
        public string Name { get; set; }
        public string age { get; set; }
    }
}

#5


引用 4 楼 guwei4037 的回复:
namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            string jsonString = "[{\"id\":\"1\" ,\"Name\": \"张三\"},{\"id\":\"2\" ,\"Name\": \"李四\"}]";
            Person[] persons = JsonConvert.DeserializeObject<Person[]>(jsonString);

            persons.FirstOrDefault(p => p.Name == "张三").age = "25";
            persons.FirstOrDefault(p => p.Name == "李四").age = "35";

            foreach (Person person in persons)
            {
                Console.WriteLine(string.Join("--",person.id,person.Name,person.age));
            }
        }
    }

    public class Person
    {
        public string id { get; set; }
        public string Name { get; set; }
        public string age { get; set; }
    }
}


能有更简单的方法吗 例如:List<T>.Add 方法

#6


引用 楼主 gb19900526 的回复:
list数据格式例如:rows=[{"id":"1" ,"Name": "张三"},{"id":"2" ,"Name": "李四"}]
 foreach (var row in rows){根据row.id得到age追加到row里面},最终rows效果:[{"id":"1" ,"Name": "张三","age":"25"},{"id":"2" ,"Name": "李四","age":"35"}]


虽然是json数据 ,转换到list里面操作的

#7


引用 2 楼 starfd 的回复:
反序列化json字符串,然后for循环赋值,再反序列化
如果在js里面这个操作就简单了,直接循环赋值

这是在后台操作的,试过List<T>.Add、List<T>.Insert 方法,但是没达到想要的效果

#8


给你一个扯淡的不建议做法
Dictionary<string, string> dic = new Dictionary<string, string>()
{
    {"1","\"25\""},
    {"2","\"35\""}
};
string jsonString = "[{\"id\":\"1\" ,\"Name\": \"张三\"},{\"id\":\"2\" ,\"Name\": \"李四\"},{\"id\":\"3\" ,\"Name\": \"王五\"}]";
string patten = @"""id"":""([^""]*)"".*?(?=})";
Console.WriteLine(Regex.Replace(jsonString, patten, m =>
{
    string v;
    if (dic.TryGetValue(m.Groups[1].Value, out v))
    {
        return string.Format("{0},\"Age\": {1}", m.Value, v);
    }
    return m.Value;
}));

#9


引用 3 楼 liuqian4243 的回复:
foreach循环,不能改变循环体的值吧.

最好用for

修改值可以,例如row.name的值都可以改,就是不知道怎么在后面追加

#10


引用 8 楼 starfd 的回复:
给你一个扯淡的不建议做法
Dictionary<string, string> dic = new Dictionary<string, string>()
{
    {"1","\"25\""},
    {"2","\"35\""}
};
string jsonString = "[{\"id\":\"1\" ,\"Name\": \"张三\"},{\"id\":\"2\" ,\"Name\": \"李四\"},{\"id\":\"3\" ,\"Name\": \"王五\"}]";
string patten = @"""id"":""([^""]*)"".*?(?=})";
Console.WriteLine(Regex.Replace(jsonString, patten, m =>
{
    string v;
    if (dic.TryGetValue(m.Groups[1].Value, out v))
    {
        return string.Format("{0},\"Age\": {1}", m.Value, v);
    }
    return m.Value;
}));

追加的值不止一个,有没有什么方法得到里面的位置索引,直接插入数据

#11


后面追加什么就看你了啊,在if判断里面已经找到那一段json了,你可以认为这个就是你想要的索引位置

#12


先转成list,再追加,追加完再转回json啊
不要老企图直接在json里加数据,那就是在操作字符串了,麻烦死

#13


引用 12 楼 Z65443344 的回复:
先转成list,再追加,追加完再转回json啊
不要老企图直接在json里加数据,那就是在操作字符串了,麻烦死


是转成list操作的,但是不知道怎么追加在指定位置

#14


引用 11 楼 starfd 的回复:
后面追加什么就看你了啊,在if判断里面已经找到那一段json了,你可以认为这个就是你想要的索引位置


按你的做很麻烦,我是想找个比较简单的方法直接插入数据,例如List<T>.Add(new {age = "25“ });这种比较快捷直接的