gha*_*ani 0 c# linq vb.net asp.net
我遵循LINQ声明:
string[] str = { "a", "ab", "abcd" };
var s1 = from s in str.AsEnumerable()
select s;
ViewState.Add("str", s1);
Run Code Online (Sandbox Code Playgroud)
我加入s1了ViewState,我得到以下错误:
输入'System.Linq.Enumerable + WhereSelectArrayIterator`2 [[System.String,mscorlib,Version = 2.0.0.0,Culture = neutral,PublicKeyToken = b77a5c561934e089],[System.String,mscorlib,Version = 2.0.0.0,Culture = neutral ,PublicKeyToken = b77a5c561934e089]]'在Assembly'System.Core,Version = 3.5.0.0,Culture = neutral,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());
Run Code Online (Sandbox Code Playgroud)
当然,这是毫无意义的,因为你可以用公正的方式达到同样的效果
string[] str = { "a", "ab", "abcd" };
ViewState.Add("str", str);
Run Code Online (Sandbox Code Playgroud)
总的来说,从示例中不清楚你想要在这里实现什么.