这是我的代码。我想将列表保存在会话变量中以便以后进行身份验证(它是用户有权访问的对象列表....)我收到一条错误消息,说明它无法将System.Collections.Generic.List转换为'System。 collections.Generic.List。帮助
protected void Session_Start(object sender, EventArgs e)
{
string strUserName = User.Identity.Name;
string strShortUserName = strUserName.Replace("WINNTDOM\\", string.Empty).ToUpper();
System.Web.HttpContext.Current.Session["strShortUserName"] = strShortUserName;
System.Web.HttpContext.Current.Session["strUserName"] = strUserName;
List<string> authorizedObjects = new List<string>();
using (CPASEntities ctx = new CPASEntities())
{
var w = (from t in ctx.tblUsers
where (t.UserPassword == strUserName)
select t).FirstOrDefault();
if (!(w==null))
{
authorizedObjects = (from t in ctx.qryUserObjectAuthorization
where (t.UserPassword == strUserName)
select new { n = t.ObjectName }).ToList();
}
}
}
答案 0 :(得分:1)
authorizedObjects
是List<string>
,但您尝试将其用作匿名类型列表:
List<string> authorizedObjects = new List<string>();
(...)
authorizedObjects = (from t in ctx.qryUserObjectAuthorization
where (t.UserPassword == strUserName)
select new { n = t.ObjectName, i = t.ObjectID }).ToList()
将您的查询更改为:
authorizedObjects = (from t in ctx.qryUserObjectAuthorization
where (t.UserPassword == strUserName)
select t.ObjectName).ToList()
答案 1 :(得分:1)
您正在初始化List<string>
对象,但填充了不同的对象。
List<string> authorizedObjects = new List<string>();
select new { n = t.ObjectName, i = t.ObjectID } <--construct a class with these properties and initialize `List<WithNewClassName>`
答案 2 :(得分:1)
要将其生成为字符串列表,请使用
authorizedObjects = (from t in ctx.qryUserObjectAuthorization
where (t.UserPassword == strUserName)
select t.ObjectName).ToList();