繁体   English   中英

使用linq登录并使用另一个C#文件中的登录(数组)列表数据集

[英]Login with linq with login (array) list dataset in another c# file

因此,我有一个.cs类页面storage.cs,您已在页面中放入了学生数组的详细信息,如您所见。 我想将其用作学生登录详细信息的数据库/数据库。

我想在login.cs中查询此数组List。 基本上,我想检查用户名和密码(在login.cs中)是否匹配,以便用户可以登录。 如何在另一个文件中访问此学生列表,并保证使用它。

storage.cs

namespace Program1
{
public class class2
{
    public class Person
    {
        // Member Variables

        public int Id { get; set; }
        public string FirstName { get; set; }
        public string LastName { get; set; }
        public string DateOfBirth { get; set; }
        public string Gender { get; set; }
    }

    public class Student : Person //student inherits from Person class
    {
        public string StudentNumber { get; set; }
        public DateTime EnrollmentDate { get; set; }
        public string UserName { get; set; }
        public string Password { get; set; }
        public string AwardID { get; set; }
        public string[] modules { get; set; }


    }



        public void allStudents(string User_name, string _password)
        {

            List<Student> st = new List<Student>{
        new Student { StudentNumber="CE52103-2", 
            FirstName ="AAA", 
            LastName = "BBB", 
            UserName = "CCC",
            Password ="DDD", 
            DateOfBirth = "",
            Gender ="",
            AwardID =""},


        new Student { StudentNumber="CE52603-2", 
            FirstName ="BBB", 
            LastName = "DDD" , 
            UserName = "FFF",
            Password ="GGG", 
            DateOfBirth = "",
            Gender = "",
            AwardID =""},

        new Student { StudentNumber="CE52302-2", 
            FirstName ="GGG", 
            LastName = "HHH", 
            UserName = "KKK",
            Password ="LLL", 
            DateOfBirth = "",
            Gender ="",
            AwardID =""},
        };


        }
}

}

这是我在按钮单击事件中的login.cs中尝试执行的操作,但是不起作用。 我对C#还是很陌生,所以请不要笑。

   login.cs

         protected void ButtonLogin_Click(object sender, EventArgs e)

   {
    Program1.class2.Student bb_ = new Program1.class2.Student();



    List<Student> st = new List<Student>();// I dont know how to acces this List :(

    st.Add(new Student
    {
        UserName = _username,
        Password = _password,

    });

    var stquery = (from Student student in st
                   where student.UserName.Equals(_username) &&
                   student.Password.Equals(_password)
                   select student).FirstOrDefault();

    if (stquery == null)
    {
        //Login failded
    }
    else
    {
        //Login successful
    }

 }

我真的被这个困住了。 我可以轻松地使用数据库,但是作业不允许我们这样做。 欢迎任何帮助。

更改班级中的签名,以返回您的学生,如下所示:

public List<Student> allStudents(string User_name, string _password)
{
        List<Student> st = new List<Student>{
        new Student { StudentNumber="CE52103-2", 
            FirstName ="AAA", 
            LastName = "BBB", 
            UserName = "CCC",
            Password ="DDD", 
            DateOfBirth = "",
            Gender ="",
            AwardID =""},

        new Student { StudentNumber="CE52603-2", 
            FirstName ="BBB", 
            LastName = "DDD" , 
            UserName = "FFF",
            Password ="GGG", 
            DateOfBirth = "",
            Gender = "",
            AwardID =""},

        new Student { StudentNumber="CE52302-2", 
            FirstName ="GGG", 
            LastName = "HHH", 
            UserName = "KKK",
            Password ="LLL", 
            DateOfBirth = "",
            Gender ="",
            AwardID =""},
        };
       return st;
}

那么您需要创建班级学生的实例以访问登录页面中的列表

编辑:您可以在class2之外声明您的班级学生,并以这种方式创建实例:

 Student student = new Student();
    list<Student> studentList = student.allStudents();

或尝试使用此方法(如果您使用的是嵌套类)

 Program1.class2.Student student = new Program1.class2.Student();
    list<Program1.class2.Student> studentList = student.allStudents();

那么您将可以通过该列表执行linq

var stquery = (from var s in studentList
                   where s.UserName.Equals(_username) &&
                   s.Password.Equals(_password)
                   select s).FirstOrDefault();

解决了,首先感谢@Pedro的帮助,只需要通过在类文件中编写login方法然后在login.cs中调用该方法来稍微打一下它即可。 这是我的最终代码,以防万一有人发现它有用。

 class3.cs

  public class Class3
  {
     public static List<_Student> st = new List<_Student>
     {

    new _Student { StudentNumber="CE52103-2", 
        FirstName ="AAA", 
        LastName = "BBB", 
        UserName = "CCC",
        Password ="DDD", 
        DateOfBirth = "",
        Gender ="",
        AwardID =""},

    new _Student { StudentNumber="CE52603-2", 
        FirstName ="BBB", 
        LastName = "DDD" , 
        UserName = "FFF",
        Password ="GGG", 
        DateOfBirth = "",
        Gender = "",
        AwardID =""},

    new _Student { StudentNumber="CE52302-2", 
        FirstName ="GGG", 
        LastName = "HHH", 
        UserName = "KKK",
        Password ="LLL", 
        DateOfBirth = "",
        Gender ="",
        AwardID =""}

        //return st;
    };

 public static void login( string username, string password)
 {
     var stquery = (from s in st
                    where s.UserName.Equals(username) &&
                   s.Password.Equals(password)
                    select s).FirstOrDefault();

     if (stquery == null)
     {
         //Login failded redirect to registration
         System.Web.HttpContext.Current.Response.Redirect("registration.aspx");

     }
     else
     {
         //Login successful redirect to manager
         System.Web.HttpContext.Current.Response.Redirect("manager.aspx");
     }

  }
 }

那是我的class2.cs

class2.cs //getters and setters

   public class Person
    {
        // Member Variables

        public int Id { get; set; }
        public string FirstName { get; set; }
        public string LastName { get; set; }
        public string DateOfBirth { get; set; }
        public string Gender { get; set; }
    }

    public class _Student : Person //student inherits from Person class
    {
        public string StudentNumber { get; set; }
        public DateTime EnrollmentDate { get; set; }
        public string UserName { get; set; }
        public string Password { get; set; }
        public string AwardID { get; set; }
        public string[] modules { get; set; }


    }

最后,这是我如何在login.cs中调用login方法

   public partial class login : System.Web.UI.Page
{


 protected void Page_Load(object sender, EventArgs e)
 {


}
protected void ButtonLogin_Click(object sender, EventArgs e)
{

    Class3.login(TextBoxLoginUser.Text, TextBoxLoginPass.Text);




 }
}

希望它可以帮助某个人:)。

暂无
暂无

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

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