c# datatable select 特定条件下的最后一行
c# datatable select last row on a speicfic condition
我有一个数据表有这样格式的数据
....... IVR........
.........IVR.......
.........IVR.......
............城市1......
............城市1......
.........城市1......
............城市2......
............城市2......
............城市2......
我想取每个值的最后一行。换句话说,现在加粗的行
挑战在于我想在数据表中添加这些 三 行。我试图在互联网上搜索,但我不知道此功能的名称是什么。你能帮帮我吗
您可以 GroupBy()
然后在 Last()
方法的帮助下 select 最后一行。
var result = from b in myDataTable.AsEnumerable()
group b by b.Field<string>("Your_Column_Name") into g
select g.Last();
DataTable filtered = myDataTable.Clone();
foreach(DataRow row in result)
{
filtered.ImportRow(row);
}
Clone
克隆 DataTable
的结构,包括所有 DataTable
模式和约束。
这可以在一个简单的循环中使用字典来保存找到的行来实现:
var cRows = new Dictionary<string, DataRow>(StringComparer.InvariantCultureIgnoreCase);
foreach (DataRow oRow in oTable.Rows)
{
var sKey = oRow["KeyValue"].ToString();
if (!cRows.ContainsKey(sKey))
{
cRows.Add(sKey, oRow);
}
else
{
cRows[sKey] = oRow;
}
}
此方法会将每个唯一值的最后一行存储在您指定的列中。
要将选定的行移动到新的数据表中:
var oNewTable = oTable.Clone();
foreach (var oRow in cRows.Values)
{
oNewTable.Rows.Add(oRow);
}
Clone
只是克隆当前 table 的结构,而不是行。
我有一个数据表有这样格式的数据
....... IVR........
.........IVR.......
.........IVR.......
............城市1......
............城市1......
.........城市1......
............城市2......
............城市2......
............城市2......
我想取每个值的最后一行。换句话说,现在加粗的行
挑战在于我想在数据表中添加这些 三 行。我试图在互联网上搜索,但我不知道此功能的名称是什么。你能帮帮我吗
您可以 GroupBy()
然后在 Last()
方法的帮助下 select 最后一行。
var result = from b in myDataTable.AsEnumerable()
group b by b.Field<string>("Your_Column_Name") into g
select g.Last();
DataTable filtered = myDataTable.Clone();
foreach(DataRow row in result)
{
filtered.ImportRow(row);
}
Clone
克隆 DataTable
的结构,包括所有 DataTable
模式和约束。
这可以在一个简单的循环中使用字典来保存找到的行来实现:
var cRows = new Dictionary<string, DataRow>(StringComparer.InvariantCultureIgnoreCase);
foreach (DataRow oRow in oTable.Rows)
{
var sKey = oRow["KeyValue"].ToString();
if (!cRows.ContainsKey(sKey))
{
cRows.Add(sKey, oRow);
}
else
{
cRows[sKey] = oRow;
}
}
此方法会将每个唯一值的最后一行存储在您指定的列中。
要将选定的行移动到新的数据表中:
var oNewTable = oTable.Clone();
foreach (var oRow in cRows.Values)
{
oNewTable.Rows.Add(oRow);
}
Clone
只是克隆当前 table 的结构,而不是行。