我有一个列表,我试图从列表中找到相应的项目。 在列表中没有该项目的固定位置,有的时候它出现在0的地方,有的时候出现在1.的时间,我正在尝试下面的代码,因此,我在查看usertype是否为“ username”,然后应该在strValue中输入相应的值
foreach (var item in SignInNames)
{
if (item.Type.Contains("username"))
{
string strValue = from a in.SignInNames.Select
}
}
这是阶级的贬低
public class test{
public List<SignInName> SignInNames { get; set; }
}
public class SignInName
{
[JsonProperty(PropertyName = "type")]
public string Type { get; set; }
[JsonProperty(PropertyName = "value")]
public string Value { get; set; }
public SignInName(string _value, string _type)
{
// Type must be 'emailAddress' (or 'userName')
this.Type = _type;
// The user email address
this.Value = _value;
}
}
此数据
"signInNames": [
{
"type": "emailAddress",
"value": "User2@gmail.com"
},
{
"type": "username",
"value": User2"
}
],
答案 0 :(得分:1)
也许您正在寻找这个?
var values = SignInNames.Where(s => s.Type.Contains("username"))
.Select(s => s.Value)
.ToArray()
答案 1 :(得分:0)
这应该返回给定Value
的第一个SignInName
中的Type
,并且返回null
却找不到任何内容。如果要返回空字符串,只需在末尾添加?? string.Empty
。
public string GetValue(List<SignInName> signInNames, string type)
=> signInNames.FirstOrDefault(s => s.Type == type)?
.Select(s => s.Value);
答案 2 :(得分:0)
您可以使用Linq从SignInName列表中获取各个项目
var result = SignInNames.Where(x => x.Type == "username"); //I used == instead of Contains() to get exact results of type username
foreach(var item in result)
Console.WriteLine($"Value = {item.Value}");
使用Contains()
var result = SignInNames.Where(x => x.Type.Contains("username"));
foreach(var item in result)
Console.WriteLine($"Value = {item.Value}");
如果您的列表包含类型为“用户名”的零或一个记录,则可以使用FirstOrDefault()
var result = SignInNames.FirstOrDefault(x => x.Type == "username");
if(result != null)
Console.WriteLine($"Value = {result.Value}");
来自MSDN文档: