用户登录。用户可以属于许多不同的 ServiceAreas 我正在尝试将用户的详细信息存储在包含用户所有信息的 Session
中。当 foreach
尝试添加相同的 key
时,它不断循环并出错。这是我的第一个错误。
Q1。我将如何阻止这种情况发生。
Q2。我能否将用户详细信息存储在 Session
中,无论他们属于 4 个 serviceAreas 还是 1 个?
var user = (from u in db.tbl_UserServiceAreaDetails
where u.tbl_User.UserName.Equals(txt_LoginName.Text)
&& u.tbl_User.Password.Equals(txt_Password.Text)
select u).FirstOrDefault();
if (user != null)
{
var serviceAreaID = user.serviceAreaID;
var serviceArea = user.tbl_ServiceArea.ServiceArea;
UserClass userDetails = new UserClass();
userDetails.UserName = user.tbl_User.UserName;
foreach (var item in serviceArea)
{
userDetails.ServiceArea.Add(serviceAreaID, serviceArea);
}
Session["User"] = userDetails;
用户类
class UserClass
{
public string UserName { get; set; }
public Dictionary<int, string> ServiceArea = new Dictionary<int, string>();
}
我需要做一个 if item. Q1 的东西
?
最佳答案
您需要独一无二的 key !
您不能将服务区域 ID 用作键,因为它不是唯一的
"The user can belong to many different ServiceAreas"
如何在 UserClass
中创建以下内容:
class UserClass
{
public string UserName { get; set; }
public Dictionary<int, ServiceArea> ServiceAreaDictionary = new Dictionary<int, ServiceArea>();
}
创建一个名为 ServiceArea 的新类来存储有关服务区域的信息。
class ServiceArea
{
public int ServiceAreaID { get; set; }
public string ServiceAreaName { get; set; }
public ServiceArea(int id, string name) {
ServiceAreaID = id;
ServiceAreaName = name
}
}
然后...
var user = (from u in db.tbl_UserServiceAreaDetails
where u.tbl_User.UserName.Equals(txt_LoginName.Text)
&& u.tbl_User.Password.Equals(txt_Password.Text)
select u).FirstOrDefault();
if (user != null)
{
var serviceAreaID = user.serviceAreaID;
var serviceArea = user.tbl_ServiceArea.ServiceArea;
UserClass userDetails = new UserClass();
userDetails.UserName = user.tbl_User.UserName;
foreach (var item in serviceArea)
{
userDetails.ServiceAreaDictionary.Add([SOME UNIQUE KEY HERE], new ServiceArea(serviceAreaID, serviceArea));
}
Session["User"] = userDetails;
我希望这能解决您的问题或让您知道下一步该怎么做。
此方法应允许您检查 ServiceAreaDictionary
以找出您想要的用户信息。 (即他们是多少个区域的成员等)
关于c# - 将用户详细信息存储在字典中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15272960/