c# datatable 用空格替换重复值
c # datatable replace duplicate values with blanks
我有一个这样的数据集。我想像第二列一样用空白替换重复值。所以只有第一个值的实例被输出,其他行是空白的。
current output
1 1
1
1
1
2 2
2
2
3 3
3
3
3
3
4 4
4
4
4
我从这个开始,但是循环中的第二次空白不等于 i-1,所以我有点卡住了。
for (int i = 1; i < dt.Rows.Count - 1; i++)
{
// Compare with previous row using index
if (dt.Rows[i]["Supplier_No"].ToString().Equals(dt.Rows[i - 1]["Supplier_No"].ToString()))
{
dt.Rows[i]["Supplier_No"] = "";
}
}
您需要记住原始值。
string previous = dt.Rows[0]["Supplier_No"].ToString();
for (int i = 1; i < dt.Rows.Count - 1; i++)
{
// Compare with previous row using index
if (dt.Rows[i]["Supplier_No"].ToString().Equals(previous))
{
dt.Rows[i]["Supplier_No"] = "";
}
else
{
previous = dt.Rows[i]["Supplier_No"].ToString();
}
}
测试了以下代码:
using System;
using System.Collections.Generic;
using System.Collections;
using System.Linq;
using System.Text;
using System.Data;
namespace ConsoleApplication181
{
class Program
{
static void Main(string[] args)
{
DataTable dt = new DataTable();
dt.Columns.Add("Supplier_No", typeof(int));
dt.Rows.Add(new object[] {1});
dt.Rows.Add(new object[] {1});
dt.Rows.Add(new object[] {1});
dt.Rows.Add(new object[] {1});
dt.Rows.Add(new object[] {1});
dt.Rows.Add(new object[] {2});
dt.Rows.Add(new object[] {2});
dt.Rows.Add(new object[] {2});
dt.Rows.Add(new object[] {2});
dt.Rows.Add(new object[] {3});
dt.Rows.Add(new object[] {3});
dt.Rows.Add(new object[] {3});
dt.Rows.Add(new object[] {3});
dt.Rows.Add(new object[] {3});
dt.Rows.Add(new object[] {3});
dt.Rows.Add(new object[] {4});
dt.Rows.Add(new object[] {4});
dt.Rows.Add(new object[] {4});
dt.Rows.Add(new object[] {4});
dt.Rows.Add(new object[] {4});
var groups = dt.AsEnumerable().GroupBy(x=> x.Field<int>("Supplier_No"));
foreach (var group in groups)
{
for (int i = 1; i < group.Count(); i++)
{
group.Skip(i).First()["Supplier_No"] = DBNull.Value;
}
}
}
}
}
我有一个这样的数据集。我想像第二列一样用空白替换重复值。所以只有第一个值的实例被输出,其他行是空白的。
current output
1 1
1
1
1
2 2
2
2
3 3
3
3
3
3
4 4
4
4
4
我从这个开始,但是循环中的第二次空白不等于 i-1,所以我有点卡住了。
for (int i = 1; i < dt.Rows.Count - 1; i++)
{
// Compare with previous row using index
if (dt.Rows[i]["Supplier_No"].ToString().Equals(dt.Rows[i - 1]["Supplier_No"].ToString()))
{
dt.Rows[i]["Supplier_No"] = "";
}
}
您需要记住原始值。
string previous = dt.Rows[0]["Supplier_No"].ToString();
for (int i = 1; i < dt.Rows.Count - 1; i++)
{
// Compare with previous row using index
if (dt.Rows[i]["Supplier_No"].ToString().Equals(previous))
{
dt.Rows[i]["Supplier_No"] = "";
}
else
{
previous = dt.Rows[i]["Supplier_No"].ToString();
}
}
测试了以下代码:
using System;
using System.Collections.Generic;
using System.Collections;
using System.Linq;
using System.Text;
using System.Data;
namespace ConsoleApplication181
{
class Program
{
static void Main(string[] args)
{
DataTable dt = new DataTable();
dt.Columns.Add("Supplier_No", typeof(int));
dt.Rows.Add(new object[] {1});
dt.Rows.Add(new object[] {1});
dt.Rows.Add(new object[] {1});
dt.Rows.Add(new object[] {1});
dt.Rows.Add(new object[] {1});
dt.Rows.Add(new object[] {2});
dt.Rows.Add(new object[] {2});
dt.Rows.Add(new object[] {2});
dt.Rows.Add(new object[] {2});
dt.Rows.Add(new object[] {3});
dt.Rows.Add(new object[] {3});
dt.Rows.Add(new object[] {3});
dt.Rows.Add(new object[] {3});
dt.Rows.Add(new object[] {3});
dt.Rows.Add(new object[] {3});
dt.Rows.Add(new object[] {4});
dt.Rows.Add(new object[] {4});
dt.Rows.Add(new object[] {4});
dt.Rows.Add(new object[] {4});
dt.Rows.Add(new object[] {4});
var groups = dt.AsEnumerable().GroupBy(x=> x.Field<int>("Supplier_No"));
foreach (var group in groups)
{
for (int i = 1; i < group.Count(); i++)
{
group.Skip(i).First()["Supplier_No"] = DBNull.Value;
}
}
}
}
}