如何从课程列表中找到相应的项目和值

时间:2019-06-10 10:29:53

标签: c# linq

我有一个列表,我试图从列表中找到相应的项目。 在列表中没有该项目的固定位置,有的时候它出现在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"
        }
    ],

3 个答案:

答案 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文档: