C# 将数据表c中的行移到顶部#
我有一个数据表,如果地址匹配,将其中一行移到数据表的顶部。我正在使用以下代码,但它不起作用。你知道如何做到这一点吗。数据表中的数据是从excel文件导入的。我在GridView中尝试了相同的if语句来突出显示重复的行,这很有效,但我也希望将它们移到顶部,因为数据有1000多行,很难一次又一次地上下移动以检查突出显示的行C# 将数据表c中的行移到顶部#,c#,asp.net,C#,Asp.net,我有一个数据表,如果地址匹配,将其中一行移到数据表的顶部。我正在使用以下代码,但它不起作用。你知道如何做到这一点吗。数据表中的数据是从excel文件导入的。我在GridView中尝试了相同的if语句来突出显示重复的行,这很有效,但我也希望将它们移到顶部,因为数据有1000多行,很难一次又一次地上下移动以检查突出显示的行 for (int row = 1; row < dtf1.Rows.Count; row++) { for (int rowinner = 1; rowinner
for (int row = 1; row < dtf1.Rows.Count; row++)
{
for (int rowinner = 1; rowinner < dtf1.Rows.Count; rowinner++)
{
if (rowinner != row)
{
if (dtf1.Rows[row][addresscolno] == dtf1.Rows[rowinner][addresscolno].ToString())
{
DataRow newrow = dtf1.Rows[row];
dtf1.Rows.RemoveAt(row);
dtf1.AcceptChanges();
dtf1.Rows.InsertAt(newrow, 1);
dtf1.AcceptChanges();
GridView1.DataSource = dtf1;
GridView1.DataBind();
}
}
}
}
for(int row=1;row
因此您希望对数据表重新排序。具有给定地址的行应位于顶部。您可以使用Linq To DataSet
对行进行排序,并使用CopyToDataTable
以新的顺序创建一个新的DataTable
:
// assuming the address is a string in a variable address, to simplify matters
DataTable tblOrdered = dtf1.AsEnumerable()
.OrderByDescending(r => r.Field<string>("addresscolno") == address)
.ThenBy(r => r.Field<string>("addresscolno"))
.CopyToDataTable();
所以基本上你想订购数据行?!我想逐个比较所有行,如果地址匹配,则将两行移到顶部。dtf1.AsEnumerable()
生成DataTable的DataRows。因此,r
是数据行。如果您只想确保地址匹配项位于顶部,并且其他行的顺序无关紧要,则可以省略然后再忽略。在这里,地址匹配首先跟在按地址排序的其他行之后。我如何编辑上面的代码来比较两行,然后移动行?@A.J:我不明白,上面的代码比较行,并对它们进行排序,以便地址匹配将排在第一位。是的,如果行匹配将同时移动到表的顶部。这有可能吗?
dtf1.Rows.InsertAt(dtf1.Rows[rowinner], 0);