Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/324.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/unity3d/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 从c中的Dataview中选择排序后的前N行_C#_Dataview - Fatal编程技术网

C# 从c中的Dataview中选择排序后的前N行

C# 从c中的Dataview中选择排序后的前N行,c#,dataview,C#,Dataview,我有一个数据表,有10行,比如其中一列 随机编号1到10。 我想把它们分类。通常,我会这样做: DataView Dv = new DataView(dtPost, "", "views desc", DataViewRowState.Unchanged); repeater.DataSource = Dv; repeater.DataBind(); 现在,我只想绑定这个数据视图中的前5行。如果我尝试这样做: DvPopBlogs.Table.Rows.Cast<System.Data.

我有一个数据表,有10行,比如其中一列 随机编号1到10。 我想把它们分类。通常,我会这样做:

DataView Dv = new DataView(dtPost, "", "views desc", DataViewRowState.Unchanged);
repeater.DataSource = Dv;
repeater.DataBind();
现在,我只想绑定这个数据视图中的前5行。如果我尝试这样做:

DvPopBlogs.Table.Rows.Cast<System.Data.DataRow>().Take(5);

OR

DvPopBlogs.Table.AsEnumerable().Take(5); //this usually works if sorting wasnt necessary
它可以工作,但dataView完全忘记了排序,只从顶部选择了5行

我也尝试过所有DataViewRowState。排序后如何选择前5行

我好像没什么主意了!
请帮忙

您正在访问DataView,但随后请求它绑定到的表-表本身没有排序,DataView提供了表的排序视图

所以试试警告干码吧

DvPopBlogs.DataViewRows.Take(5)
获取排序顺序DataViewRows中的前5个。如果需要数据行,请执行以下操作:


很可能DataView中的枚举器是DataViewRows集合,因此您可以只使用DvPopBlogs.Take5。。。。如果愿意的话。

既然您已经在对通用列表进行强制转换,为什么不强制转换dataview而不是datatable呢

IEnumerable<DataRow> sortedRows = DvPopBlogs.Cast<DataRowView>().Take(5).Select(r => r.Row);

是的,我在调试时发现了这一点,dataview似乎有排序顺序,但当我添加表时,排序顺序就丢失了,现在我知道表是原始数据。谢谢但是,DvPopBlogs是一个DataView,它既没有.Take方法也没有.DataViewRows方法!请尝试dvpopbogs.AsEnumerable.Take,或者在最坏的情况下尝试dvpopbogs.ToTable。后者将从视图的内容创建一个新的数据表。您好,很抱歉,如果我使用.ToTable方法,repeater在bind上抱怨某些列不存在。调试表明它确实存在,可能是我做错了什么,如果没有完整的代码,您肯定无法发现。你建议我现在做什么?谢谢,很抱歉问了太多问题!谢谢,我真的发现这是可行的,我的代码中有一个小错误,五天来我一直在找错误的树!我是个白痴!嗨,它仍然抛出相同的错误,其中一列不存在!我已经尝试过调试它,我可以清楚地看到该列,但是,在databind上它确实抛出了这个错误!
IEnumerable<DataRow> sortedRows = DvPopBlogs.Cast<DataRowView>().Take(5).Select(r => r.Row);