[英]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.