有关在ViewState中添加Linq变量的问题
本文关键字:Linq 变量 问题 添加 ViewState | 更新日期: 2023-09-27 18:18:36
我有以下LINQ语句:
string[] str = { "a", "ab", "abcd" };
var s1 = from s in str.AsEnumerable()
select s;
ViewState.Add("str", s1);
我将s1
添加到ViewState
中,得到以下错误:
类型system . string,‘System.Linq.Enumerable + WhereSelectArrayIterator 2 [[mscorlib, Version=2.0.0.0, Culture=neutral,都必须要]、[系统。字符串,mscorlib,版本=2.0.0.0,文化=中性,PublicKeyToken=b77a5c561934e089]]'在装配系统中。核心,版本=3.5.0.0,文化=中性,PublicKeyToken=b77a5c561934e089'未标记为可序列化。
如何解决这个问题,如何将LINQ变量添加到ViewState
中
您不能直接这样做,因为您想要添加到ViewState
的任何内容都必须是可序列化的(标记为SerializableAttribute
),正如编译器告诉您的那样。s1
的运行时类型是System.Linq.Enumerable
中嵌套的泛型类,它没有该属性。
.ToArray()
(或其他类似的方法):
string[] str = { "a", "ab", "abcd" };
var s1 = from s in str.AsEnumerable() select s;
ViewState.Add("str", s1.ToArray());
当然,这是没有意义的,因为您可以通过
获得相同的效果。string[] str = { "a", "ab", "abcd" };
ViewState.Add("str", str);
总的来说,从这个例子中并不能清楚地看出你在这里想要达到什么目的。
你已经有了一个数组,所以在ViewState中存储str
。
ViewState.Add("str", str);