[英]Check if value exist in a List C# in DataTabe
I want to check in the grid and display it into the datatable: if the NPM already exists then the data will not be entered into the datatable 我想检查网格并将其显示在数据表中:如果NPM已经存在,则数据将不会输入到数据表中
i have data in grid 我在网格中有数据
NPM
123
121
122
124
124
124
128
in need datatable like this 需要这样的数据表
NPM
123
121
122
124
128
Left : Grid , Right : Datatable 左:网格,右:数据表
but my code always get all data. 但是我的代码总是获取所有数据。 please help
请帮忙
DataTable dt = new DataTable();
dt.Columns.Add("NPM");
grd2.DataSource = dt;
string NPM = "";
string NPM_CEK = "";
for (int i = 0; i < grd.Rows.Count - 1; i++)
{
NPM = grd.Rows[i + 1]["NPM"].ToString();
DataRow row = dt.NewRow();
dt.Rows.Add(row);
for (int j = 0; j < dt.Rows.Count; j++)
{
NPM_CEK = dt.Rows[j]["NPM"].ToString();
if (NPM_CEK == NPM)
{
}
else
{
grd2.Rows[i + 1]["NPM"] = NPM;
}
}
}
grd2.AutoSizeCols();
but my code always get all data. 但是我的代码总是获取所有数据。 please help
请帮忙
i wanna data like this : 我想要这样的数据:
You can use linq for this, no need to loop through and manually assign rows. 您可以为此使用linq,而无需遍历和手动分配行。
if (sourceTable.Rows.Count > 0)//check for data
{
dt = sourceTable.AsEnumerable()
.GroupBy(x=>x.Field<int>("NPM"))// if that column type is `int`
.Select(g=>g.First()) // take the first row of each group (if that's what you want)
.CopyToDataTable(); // copy it to datatable
}
If you just want distinct NPM values in a datatable format on the other hand... 另一方面,如果您只想以数据表格式显示不同的NPM值...
if(sourceTable.Rows.Count > 0)
{
dt = sourceTable.AsEnumerable()
.Select(x=>x.Field<Int>("NPM"))
.Distinct()
.CopyToDataTable();
}
DataTable dt = new DataTable();
dt.Columns.Add("NPM");
string NPM = "";
string NPM_CEK = "";
List<string> NPMList = new List<string>();
for (int i = 0; i < grd.Rows.Count - 1; i++)
{
NPM = grd.Rows[i].Cells["NPM"].Value.ToString();
if (!NPMList.Contains(NPM))
{
DataRow row = dt.NewRow();
row[0] = NPM;
dt.Rows.Add(row);
NPMList.Add(NPM);
}
}
grd2.DataSource = dt;
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.