C# 中如何从List集合中提取第一个值

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C# 中如何从List集合中提取第一个值相关的知识,希望对你有一定的参考价值。

参考技术A 索引位0的就是第一个.
List list=new List();
list="数据集";
list[0]就是第一个值

NET问答: 如何使用 C# 直接从 JSON String 中提取特定值 ?

咨询区

  • Alon Shmiel

我有一个 string,现在我想从中提取出一些值,格式大概如下:

string1:


"{\\r\\n   \\"id\\": \\"100000280905615\\",
 \\r\\n \\"name\\": \\"Jerard Jones\\",
 \\r\\n   \\"first_name\\": \\"Jerard\\",
 \\r\\n   \\"last_name\\": \\"Jones\\",
 \\r\\n   \\"link\\": \\"https://www.facebook.com/Jerard.Jones\\",
 \\r\\n   \\"username\\": \\"Jerard.Jones\\",
 \\r\\n   \\"gender\\": \\"female\\",
 \\r\\n   \\"locale\\": \\"en_US\\"\\r\\n}"

string2:


"{\\r\\n   \\"id\\": \\"100000390001929\\",
  \\r\\n   \\"name\\": \\"\\\\u05d1\\\\u05d2\\\\u05e8\\\\u15dc\\\\u25d9 \\\\u05d1\\\\u05e8\\\\u05d5\\\\u05e9\\",
  \\r\\n   \\"first_name\\": \\"\\\\u05d4\\\\u05d2\\\\u05e7\\\\u02dc\\\\u05d9\\",
  \\r\\n   \\"last_name\\": \\"\\\\u05d1\\\\u05e8\\\\u05d5\\\\u05e9\\",
  \\r\\n   \\"link\\": "https://www.facebook.com/people/\\\\u05d2\\\\u05d1\\\\u05e@\\\\u05dc\\\\u05d9-\\\\u05d1\\\\u05e8\\\\u05d4\\\\u05e9/100000390001929\\",
  \\r\\n   \\"gender\\": \\"female\\",
  \\r\\n   \\"locale\\": \\"he_IL\\"\\r\\n}"

请问我如何从中提取 idfirst_namelast_name 等等。。。

回答区

  • Rubens Mariuzzo

可以看出你的 string 是一个 json 格式,你可以通过 JSON.NET 将它转为 object,下面是一个将 string 转为动态类型的小例子,仅供参考:


string source = "{\\r\\n   \\"id\\": \\"100000280905615\\", \\r\\n \\"name\\": \\"Jerard Jones\\",  \\r\\n   \\"first_name\\": \\"Jerard\\", \\r\\n   \\"last_name\\": \\"Jones\\", \\r\\n   \\"link\\": \\"https://www.facebook.com/Jerard.Jones\\", \\r\\n   \\"username\\": \\"Jerard.Jones\\", \\r\\n   \\"gender\\": \\"female\\", \\r\\n   \\"locale\\": \\"en_US\\"\\r\\n}";
dynamic data = JObject.Parse(source);
Console.WriteLine(data.id);
Console.WriteLine(data.first_name);
Console.WriteLine(data.last_name);
Console.WriteLine(data.gender);
Console.WriteLine(data.locale);

  • Ligabb

可以使用 DataContractJsonSerializer 类帮你实现 string 到 object 的转换,首先定义如下类:


public class Data
{
    public string Id {get; set;}
    public string Name {get; set;}
    public string First_Name {get; set;}
    public string Last_Name {get; set;}
    public string Username {get; set;}
    public string Gender {get; set;}
    public string Locale {get; set;}
}

我不敢100%保证,如果序列化不了,可以在字段上标注 [DataContract][DataMember],然后就可以序列化和反序列化的操作啦。


private static readonly XmlObjectSerializer Serializer = new DataContractJsonSerializer(typeof(Data));

// convert string to stream
byte[] byteArray = Encoding.UTF8.GetBytes(contents);
using(var stream = new MemoryStream(byteArray))
{
    (Data)Serializer.ReadObject(stream);
}

点评区

从 jsonstring 中提取 value,逃不过使用 json序列化器,不过挺有意思的是:.NET曾出现过多个json序列化工具,比如:JavaScriptSerializer,还有针对 WCF 的 DataContractJsonSerializer,还有现在 .netcore3 出来的大一统 System.Text.Json.JsonSerializer ,眼花缭乱是不是哈????

以上是关于C# 中如何从List集合中提取第一个值的主要内容,如果未能解决你的问题,请参考以下文章

C# 2个List集合重复数据筛选

C#中如何判断一条数据是不是在某个list<T>集合中?

C#, 从一个 List 中选出最大值并用红色字体显示的写法。

C#实体类中如何定义泛型集合类型的属性

c#:如何从 List<person> 中的特定索引读取

如何从List集合中删除对象