使用LINQ C#从列表中选择和匹配数据#

时间:2016-08-07 06:38:33

标签: c# angularjs linq asp.net-web-api

我有List中的数据,如果数据与任何记录匹配,我想登录。

public HttpResponseMessage Post(form model)
        {
            List<form> user = new List<form>();
            user.Add(new form { username = "admin", password = "admin" });
            user.Add(new form { username = "Gopal", password = "123" });
            user.Add(new form { username = "niit", password = "niit" });

            if (model.username == user.Select(p => p.username.Equals(model.username))
            {

            }
        }

我想要这样 - (完成硬编码数据)

        if (model.username == "admin" && model.password == "admin")
        {
            return Request.CreateResponse(HttpStatusCode.Accepted);
        }
        else { return Request.CreateResponse(HttpStatusCode.InternalServerError); }

这是我的模型类 - 表单

 public class form
    {
        [Required]
        public string username { get; set; }
        [Required]  
        public string password { get; set; }
    }

我用硬编码数据完成了这项工作但是想要用list做。请帮我解决这个问题。我怎么能这样做?

4 个答案:

答案 0 :(得分:1)

试试这种方式

 if (user.Where(a => a.username == model.username && a.password == model.password).Select(p => p).Count() != 0)
    {
        return Request.CreateResponse(HttpStatusCode.Accepted);
    }
    else 
    { 
       return Request.CreateResponse(HttpStatusCode.InternalServerError);
    }

或者您只需使用any

即可
 if (user.Any( a => a.username.Contains(model.username) && a.password.Contains(model.password)))
   {
       return Request.CreateResponse(HttpStatusCode.Accepted);
   }
   else 
   { 
      return Request.CreateResponse(HttpStatusCode.InternalServerError);
   }

答案 1 :(得分:1)

我希望这不是生产代码!如果要存储用户数据,您将需要使用密码salting +哈希。如果您没有经验,最好不要用这种东西编写自己的代码。

但要回答你的问题,你很可能想要这个:

user.Any(u => u.username == model.username && u.password == model.password)

但是有更好的数据结构。例如,字典将允许通过用户名O(1)查找用户(表单?),而不需要遍历整个集合。

答案 2 :(得分:1)

你可以这样做,

reason: Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[TMMonth name]: unrecognized selector sent to instance 0x7f993bdbbb00'

答案 3 :(得分:0)

使用以下代码:

if (user.Where(x=> x.username.Equals(model.username) && x.password.Equals(model.password)).FirstOrDefault() != null)
        {
            return Request.CreateResponse(HttpStatusCode.Accepted);
        }
        else { return Request.CreateResponse(HttpStatusCode.InternalServerError); }
希望它会对你有所帮助。