从 Session 变量获取值
Getting values from Session variable
我有这段代码
var myList = (from p in db.Full
where ((p.date_reception > begin & p.date_reception < end & !p.mc_host_class.Contains("NULL")) &
(!strListe.Contains(p.mc_host_class)))
group p by p.mc_host_class into g
orderby g.Count() descending
select new
{
hostclassx = g.Key,
countx = g.Count()
}).Take(10).ToList();
HttpContext.Current.Session["allList"] = myList;
我想从我的会话变量中获取两种类型的值,在使用我曾经做过的会话变量之前
object[] ys = myList.Select(a => (object)a.countx.ToString()).ToArray();
List<String> xs = new List<string>();
foreach (var x in myList.Select(i => i.hostclassx))
{
xs.Add(x);
}
我想从会话变量中获取相同类型的变量(xs 和 ys)
您在会话中存储了一个匿名对象。匿名对象无意离开当前方法的边界。所以从定义一个模型开始:
public class MyModel
{
public string HostClass { get; set; }
public int Count { get; set; }
}
然后将您的查询投射到这个对象中(请记住,您可能需要根据需要调整 HostClass
属性 的类型 - 我已将其定义为字符串但是在您的特定模型中,它可能是其他类型,只是不清楚您目前粘贴的代码中涉及哪些类型的对象):
...
orderby g.Count() descending
select new MyModel
{
HostClass = g.Key,
Count = g.Count()
}).Take(10).ToList();
好的,现在您的 Session["allList"]
中存储了一个 List<MyObject>
。因此,为了在您的代码中的其他地方检索此值,只需转换回同一类型即可:
var list = (List<MyModel>)HttpContext.Current.Session["allList"];
附带说明一下,您似乎在 where 谓词中使用了 &
运算符而不是 &&
,也许您并不完全想使用它。您似乎混淆了 logical AND
运算符和 binary AND
运算符。
我有这段代码
var myList = (from p in db.Full
where ((p.date_reception > begin & p.date_reception < end & !p.mc_host_class.Contains("NULL")) &
(!strListe.Contains(p.mc_host_class)))
group p by p.mc_host_class into g
orderby g.Count() descending
select new
{
hostclassx = g.Key,
countx = g.Count()
}).Take(10).ToList();
HttpContext.Current.Session["allList"] = myList;
我想从我的会话变量中获取两种类型的值,在使用我曾经做过的会话变量之前
object[] ys = myList.Select(a => (object)a.countx.ToString()).ToArray();
List<String> xs = new List<string>();
foreach (var x in myList.Select(i => i.hostclassx))
{
xs.Add(x);
}
我想从会话变量中获取相同类型的变量(xs 和 ys)
您在会话中存储了一个匿名对象。匿名对象无意离开当前方法的边界。所以从定义一个模型开始:
public class MyModel
{
public string HostClass { get; set; }
public int Count { get; set; }
}
然后将您的查询投射到这个对象中(请记住,您可能需要根据需要调整 HostClass
属性 的类型 - 我已将其定义为字符串但是在您的特定模型中,它可能是其他类型,只是不清楚您目前粘贴的代码中涉及哪些类型的对象):
...
orderby g.Count() descending
select new MyModel
{
HostClass = g.Key,
Count = g.Count()
}).Take(10).ToList();
好的,现在您的 Session["allList"]
中存储了一个 List<MyObject>
。因此,为了在您的代码中的其他地方检索此值,只需转换回同一类型即可:
var list = (List<MyModel>)HttpContext.Current.Session["allList"];
附带说明一下,您似乎在 where 谓词中使用了 &
运算符而不是 &&
,也许您并不完全想使用它。您似乎混淆了 logical AND
运算符和 binary AND
运算符。