【发布时间】:2014-03-06 08:27:42
【问题描述】:
到我的应用程序:
我有两个 DataTable,我想将第一个 DataTable 过滤到第二个。为此,我从第一个 DataTable 中获取列 user 和 modul,如果它在第二个中不存在,我添加一个新行。
这是我的第二个数据表的结构:
User | Modul | Time | Department | Status
我想检查两个列(用户和模块)是否存在第二个 DataTable 中具有此值的行。如果条目存在,我需要行索引。我怎么能用 Linq 做到这一点? 我的第二个 DataTable 的名称是 analyse_table。
这里是我的代码:
private static DataTable FilterDataTable(DataTable nofilter_datatable)
{
DataTable analyse_table = new DataTable("Filter_Analyse");
DataColumn User = new DataColumn("User", typeof(string));
DataColumn Modul = new DataColumn("Modul", typeof(string));
DataColumn TIME = new DataColumn("TIME", typeof(string));
DataColumn Department = new DataColumn("Department", typeof(string));
DataColumn Status = new DataColumn("Status", typeof(string));
analyse_table.Columns.Add(User);
analyse_table.Columns.Add(Modul);
analyse_table.Columns.Add(TIME);
analyse_table.Columns.Add(Department);
analyse_table.Columns.Add(Status);
foreach (DataRow nf_row in nofilter_datatable.Rows)
{
string user = nf_row["User"].ToString();
string modul = nf_row["Modul"].ToString();
string OUT = nf_row["OUT"].ToString();
string IN = nf_row["IN"].ToString();
bool contains_user = analyse_table.AsEnumerable()
.Any(row => user == row.Field<string>("User"));
bool contains_modul = analyse_table.AsEnumerable()
.Any(Row => modul == Row.Field<string>("Modul"));
if (!contains_user || !contains_modul)
{
try
{
DataRow row = analyse_table.NewRow();
row["User"] = user;
row["Modul"] = modul;
if (OUT != string.Empty)
{
row["TIME"] = OUT;
row["Status"] = "OUT";
}
else if (IN != string.Empty)
{
row["TIME"] = IN;
row["Status"] = "IN";
}
string[] userSpli = user.Split('@');
row["Department"] = GetActiveDirectoryAttribute(userSpli[0], "Department", domaincontroller);
analyse_table.Rows.Add(row);
}
catch (Exception)
{
}
}
if (contains_user && contains_modul)
{
//index??
//string status = analyse_table.Rows[0]["Status"].ToString();
}
}
return analyse_table;
}
我需要帮助。
【问题讨论】:
-
如果两个搜索都返回 true,则不清楚要更新哪一行。通过两次单独搜索找到的行不能相同
-
您的代码做了一些不同的事情,它只是检查是否存在任何用户或任何模块,否则它将添加该行。但它不检查用户和模块是否属于同一行,这是需要的吗?
-
我想要 DataTable analyse_table 的行索引,其中 User Column 的值是一样的,字符串 user 和 Modul Column 的值是一样的字符串 modul。
-
我已经更新了……现在你可以看到完整的方法了。
标签: c# asp.net linq datatable rows