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