C# 与在ViewState中添加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

我有以下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, 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的当前页面等,而不是用于放入数据。