gpt4 book ai didi

c# - 无法转换类型为 'System.Collections.Generic.List to type ' System.Data.DataSet 的对象

转载 作者:行者123 更新时间:2023-11-30 15:42:05 25 4
gpt4 key购买 nike

我在对 gridview 进行排序时遇到错误。我的数据源是一个 var 结果,我通过 Linq 查询得到它

protected void Page_Load(object sender, EventArgs e)
{
dt1 = obj1.Table1data().Tables[0];
dt2 = obj1.Table2data().Tables[0];
dt3 = obj1.Table3data().Tables[0];

var results = (
from table1 in dt1.AsEnumerable()
join table2 in dt2.AsEnumerable() on (int)table1["id"] equals (int)table2["id"]
join table3 in dt3.AsEnumerable() on (int)table1["id"] equals (int)table3["id"]

select new
{
id = (int)table1["id"],
S1= (int)table1["S1"],
P1= (double)table1["P1"],
P2= (int)table2["P2"],
P3= (double)table2["P3"],
P4 = (int)table3["P4"],
P5= (double)table3["P5"],

}).ToList();

Session["ds"] = results;
GridView1.DataSource = results;
GridView1.DataBind();
}

protected void GridView1_Sorting(object sender, GridViewSortEventArgs e)
{
DataSet dataSet = (DataSet)Session["ds"];
DataTable dataTable = dataSet.Tables[0];

if (dataTable != null)
{
DataView dataView = new DataView(dataTable);
dataView.Sort = e.SortExpression + " " + ConvertSortDirectionToSql(e.SortDirection);

GridView1.DataSource = dataView;
GridView1.DataBind();
}
}

// here in the GridView1_sorting at DataSet dataSet = (DataSet)Session["ds"], I am getting an error

错误:

Unable to cast object of type System.Collections.Generic.List`1[<>f__AnonymousType5`8[System.Int32,System.String,System.Int32,System.Double,System.Int32,System.Double,System.Int32,System.Double]]' to type 'System.Data.DataSet'

2) 还有一个问题,var 结果的数据类型是什么。谢谢太阳

最佳答案

Session["ds"]持有 var results , 和 resultsList<'A> , 其中'A是由编译器生成的匿名类型。您不能将其转换为 DataSet .如果你想将它放入 session 中并稍后检索它,声明一个适当的类,然后你可以轻松地将列表放入和取出 session 。

我的意思是您的查询正在构建一个匿名类型,因为 select声明

 select new 
{

这通常没问题,但您试图通过将此结果放入 session 中来在直接本地范围之外使用它。您需要构建一个适当的类来保存该数据。赋予它正确的属性。

 public class MyData
{
// give it the appropriate properties you need
public int ID { get; set; }
public int S1 { get; set; }
public double P1 { get; set; }
public int P2 { get; set; }
public double P3 { get; set; }
public int P4 { get; set; }
public double P5 { get; set; }
// by the way... you should really come up with better names
// for these properties!
}

然后进行查询

 select new MyData
{

当你调用 ToList() 时结果,你会得到 List<MyData> .因此,当您从 session 中检索它时,这就是您要将其转换为的目标。

 var list = (List<MyData>)Session["ds"];

关于c# - 无法转换类型为 'System.Collections.Generic.List to type ' System.Data.DataSet 的对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7775117/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com