C# 与在ViewState中添加Linq变量相关的问题
我有以下LINQ声明:C# 与在ViewState中添加Linq变量相关的问题,c#,asp.net,vb.net,linq,C#,Asp.net,Vb.net,Linq,我有以下LINQ声明: string[] str = { "a", "ab", "abcd" }; var s1 = from s in str.AsEnumerable() select s; ViewState.Add("str", s1); 我将s1添加到ViewState中,得到以下错误: 类型 'System.Linq.Enumerable+其中SelectArrayInterator'2[[System.String, mscorl
string[] str = { "a", "ab", "abcd" };
var s1 = from s in str.AsEnumerable()
select s;
ViewState.Add("str", s1);
我将s1
添加到ViewState
中,得到以下错误:
类型
'System.Linq.Enumerable+其中SelectArrayInterator'2[[System.String,
mscorlib,版本=2.0.0.0,区域性=中性,
PublicKeyToken=b77a5c561934e089],[System.String,mscorlib,
版本=2.0.0.0,区域性=中性,PublicKeyToken=b77a5c561934e089]'
在程序集'System.Core,版本=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
的任何内容都必须是可序列化的(用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);
总的来说,从示例中不清楚您在这里想要实现什么。您已经有了一个数组,所以请将
str
存储在ViewState中
ViewState.Add("str", str);
您已经有了一个数组,所以将
str
存储在ViewState中
ViewState.Add("str", str);
在相关注释中,ViewState用于存储状态,即下拉列表中的选定值、GirdView的当前页面等,而不是用于放入数据。在相关注释中,ViewState用于存储状态,即下拉列表中的选定值、GirdView的当前页面等,而不是用于放入数据。