C# 列表<列表>

本文关键字:列表 | 更新日期: 2023-09-27 17:56:25

>我有一个具有以下属性的类:教育.cs为也许是基本的问题道歉

public List<List<Education>>data { get; set; }
public class Education
{
    public From school { get; set; }
    public From year { get; set; }
    public string type { get; set; }
}

这是我为反序列化 json 字符串定义的类发件人是另一个.cs文件

public string id { get; set; }
public string name { get; set; }

这是我的 json 字符串

education": [
  {
     "school": {
        "id": "107751089258341",
        "name": "JNTU, Kakinada, India"
     },
     "year": {
        "id": "132393000129123",
        "name": "2001"
     },
     "type": "College"
  },
  {
     "school": {
        "id": "103710319677602",
        "name": "University of Houston"
     },
     "year": {
        "id": "113125125403208",
        "name": "2004"
     },
     "type": "Graduate School"
  }

]

有人可以告诉我如何访问教育(学校,年份)的成员吗?这对你来说可能是小菜一碟。在我的aspx.cs中,我必须编写一个foreach或任何其他变量才能访问我的变量,school.name year.name必须将类成员的这种访问权限工作到我的aspx中.cs

url= "https://graph.facebook.com/me?fields=education&access_token=" + oAuth.Token;
           json = oAuth.WebRequest(oAuthFacebook.Method.GET, url, String.Empty);
           List<Education>??? = js.Deserialize<List<??>(json)

谢谢史密斯

C# 列表<列表<T>>

你需要两个彼此内部的foreach循环;每个级别的List<>一个。

@Slaks解决方案应该适合您。虽然我相信您的数据更好地表示为List<Education>(或者更好的是,IEnumerable<Education>),您可能想做的是将其扁平化。

最好在源代码中将其扁平化,以确保您的代码在其他地方更干净。

如果你在.NET 3.5上,你可以像这样做

var flattenData = data.SelectMany(x => x);

如果您使用的是 .NET 3.5/C# 3.0 之前的版本,则可以这样做

//Your original code block
{
    IEnumerable<Education> flattenData = FlattenMyList(data);
    //use flatten data normally
}
IEnumerable<T> FlattenMyList<T> (List<List<T> data){
    foreach(List<T> innerList in data){
        foreach(T item in innerList){
            yield return item;
        }
    }
    yield break;
}