gpt4 book ai didi

C# 从 DataView 创建 DataView

转载 作者:太空宇宙 更新时间:2023-11-03 10:24:19 25 4
gpt4 key购买 nike

我想通过过滤现有的 DataView 创建一个新的 DataView,但是我遇到了麻烦,因为 DataView 没有 .AsEnumerable() 方法并且没有实现 IEnumerable{DataRow}。

这基本上是我想要完成的:

//Some table.
DataTable dt = new DataTable();

//Somewhere in here the table is given columns and rows...

//The first view shows some subset of the table.
//(This works fine.)
DataView dv1 = dt.AsEnumerable()
.Where(r => r.Field<int>("ID") < 1000)
.AsDataView();

//The second view should show a subset of the first view, but I cannot find the methods to do this.
//(This does not compile.)
DataView dv2 = dv1.AsEnumerable()
.Where(r => r.Field<int>("Salary") > 50000)
.AsDataView();

到目前为止我想到的最好的事情是

DataView dv2 = dv1.ToDataTable().AsEnumerable()
.Where(r => r.Field<int>("Salary") > 50000)
.AsDataView();

这很丑,我猜效率很低。

从 View 生成 View 的最佳方式是什么?

最佳答案

在单独的 IEnumerable 中创建第一个过滤器,然后使用它创建两个数据 View :

var filtered = dt.AsEnumerable()
.Where(r => r.Field<int>("ID") < 1000);


DataView dv1 = filtered.AsDataView();

DataView dv2 = filtered.Where(r => r.Field<string>("Salary") > 50000)
.AsDataView();

关于C# 从 DataView 创建 DataView,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32192144/

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