Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/302.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 从列表中的子列表按索引获取项_C#_List - Fatal编程技术网

C# 从列表中的子列表按索引获取项

C# 从列表中的子列表按索引获取项,c#,list,C#,List,在我的实际项目中,我实际上是使用带有原始主体的API检索数据,返回结果是JSON。我试着给我的代码举一个类似的例子,如下所示 我想要实现的是允许用户在下拉列表中进行选择(Xamarin表单中的选择器),然后显示相应的结果。。。也就是说,下拉列表将包含John和Mark。如果用户选择John,它将显示密码:1234,角色:Admin。。。。。我不确定如何实现这一点,因为JSON结果是在一个完整的块中,类似于我的示例var exmp 我的代码 var exmp = "User: John, Pas

在我的实际项目中,我实际上是使用带有原始主体的API检索数据,返回结果是JSON。我试着给我的代码举一个类似的例子,如下所示

我想要实现的是允许用户在下拉列表中进行选择(Xamarin表单中的选择器),然后显示相应的结果。。。也就是说,下拉列表将包含John和Mark。如果用户选择John,它将显示密码:1234,角色:Admin。。。。。我不确定如何实现这一点,因为JSON结果是在一个完整的块中,类似于我的示例
var exmp

我的代码

 var exmp = "User: John, Password: 1234, Role: Admin, User: Mark, Password: 0000, Role: User";
        string[] empTxt = exmp.Split(new[] { ',', ':' }, StringSplitOptions.RemoveEmptyEntries);
        var user = new List<string>();
        var userdetails = new List<string>();
        for (int i = 0; i < empTxt.Count(); i++)
        {
            if (empTxt[i].Equals("User"))
            {

                user.Add(empTxt[i + 1]);
                user.Add(empTxt[i + 3]);
                user.Add(empTxt[i + 5]);
                userdetails.AddRange(user);
            }

        }
        for (int i = 0; i < userdetails.Count(); i++)
        {
            //labelTxt.Text = userdetails.ToString();
              Picker.ItemsSource = userdetails[0]; (can't run code because error)
        }

}

如果您有以下有效的JSON作为输入,那么这一切就变得非常简单

[
  {
    "User":"John","Password":"1234","Role":"Admin"
  },
  {
    "User":"Mark","Password":"0000","Role":"User"
  }
]
首先定义一个将捕获用户数据的类

public class UserRecord
{
    public string User;
    public string Password;
    public string Role;
    public override string ToString() => this.User;
}
现在,使用
Newtonsoft.Json
,我可以像这样反序列化数据:

UserRecord[] users = JsonConvert.DeserializeObject<UserRecord[]>(json);
ToString()
的覆盖将确定下拉列表中显示的数据。当用户在下拉列表中选择项目时,您应该能够将所选项目强制转换为
UserRecord
,以获取其余字段


如果有效,请告诉我。

你能读一下吗?我不明白你的代码和这个问题有什么关系。请给我们一个答案,给出你得到的错误。。。。我想从
exmp
获取结果。我想我说得很清楚。我想要实现的是从string
exmp
中获取所有用户名,在本例中是John和Mark。我想从列表中提取此项,并将其按itemsource附加到dropdownlist中。这允许用户选择是想要John还是Mark。从下拉列表中选择后,我想显示密码和角色。当我试图在LabelXTYou have role as“User”中显示特定索引时,出现了错误。所以你的平等(“用户”)将不起作用。@Charis-如果你的问题足够清楚,我就不会问了。请您提供一个错误提示,说明无法将类型字符串转换为系统通用ilist。您共享的代码没有给出该错误。@RajuJoseph hi感谢您的帮助。我认为这是第二部分没有显示的错误之一。我把这个角色改成了导演。
UserRecord[] users = JsonConvert.DeserializeObject<UserRecord[]>(json);
Picker.ItemsSource = users;