繁体   English   中英

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

[英]Select and Match Data from List using LINQ C#

我在列表中有数据,如果数据与任何记录匹配,我想登录。

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; }
    }

我已经使用硬编码数据完成了此操作,但想使用列表。 请帮我解决这个问题。 我该怎么做?

试试这个

 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);
   }

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

但是要回答您的问题,您很可能想要这样:

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

虽然有更好的数据结构。 例如,字典将允许通过用户名对用户(窗体?)进行O(1)查找,而无需遍历整个集合。

你可以这样做,

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

使用以下代码:

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); }

希望对您有帮助。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM