2016-08-07 2 views
0

У меня есть данные в списке, и я хочу сделать логин, если данные соответствуют любому из записей.Выберите и сопоставьте данные из списка с помощью 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; } 
    } 

Я сделал это с твердыми закодированными данными, но хотите сделать со списком. Пожалуйста, помогите мне это. Как мне это сделать?

ответ

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

Спасибо, что работает. –

+0

отличная, счастливая кодировка – Mostafiz

1

Я надеюсь, что это не производство кода! Вы будете использовать палитру + хеширование паролей, если данные пользователя будут сохранены. Лучше не писать свой собственный код с такого рода материалами, если вы не испытываете.

НО ответить на ваш вопрос, вы, скорее всего, хотите:

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

Есть лучшие структуры данных, хотя. Например, словарь позволит O (1) искать пользователя (форму?) По имени пользователя, а не выполнять итерацию всей коллекции.

+0

Ответ простой. Благодарю. Оно работает. –

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

Будет похоже на это 'user.Any (use => model.username.Contains (use.username) && model.password.Contains (use.password))' –

+0

Да, он работает, внося некоторые изменения, которые я опубликовал в комментарий. Большое спасибо..!! –

+0

@GopalSharma Знаете ли вы, чтобы повысить? – Sajeetharan

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

надеюсь, что это поможет.

Смежные вопросы