检查List C#中是否存在值
发布时间:2020-12-16 01:53:18 所属栏目:百科 来源:网络整理
导读:我有一个由存储过程填充的DataTable,以及包含请求集合(RequestNumber和Tasks(TaskId))的数据表.当我通过任务到达第一个请求号时,我将它添加到我的列表中,然后使用额外的数据行,我检查列表以查看它们是否存在(if(dr [“RequestNumber”].ToString()!= acList
我有一个由存储过程填充的DataTable,以及包含请求集合(RequestNumber和Tasks(TaskId))的数据表.当我通过任务到达第一个请求号时,我将它添加到我的列表中,然后使用额外的数据行,我检查列表以查看它们是否存在(if(dr [“RequestNumber”].ToString()!= acList [i] .RequestNumber))如果有,我删除dataRow,如果没有我添加它们到列表.
这在顺序中很好用,但是如果数据行和列表偏离一个,则允许添加行.如果值存在于列表中,还有其他方法可以完成查找. 提前致谢. foreach (DataRow dRow in dt.Rows) { DataRow dr = dt.NewRow(); dr["Project"] = dRow["Project"]; dr["RequestNumber"] = dRow["RequestNumber"]; dr["RequestId"] = dRow["RequestId"]; dr["TaskType"] = dRow["TaskType"]; dr["TaskId"] = dRow["TaskId"]; dr["TaskStatus"] = dRow["TaskStatus"]; dr["AssignedTo"] = dRow["AssignedTo"]; dr["DateDue"] = dRow["DateDue"]; if (acList.Count == 0) { acList.Add(new AssignedClass { Project = dr["Project"].ToString(),RequestNumber = dr["RequestNumber"].ToString(),RequestId = dr["RequestId"].ToString(),TaskType = dr["TaskType"].ToString(),TaskId = dr["TaskId"].ToString(),TaskStatus = dr["TaskStatus"].ToString(),AssignedTo = dr["AssignedTo"].ToString(),DateDue = dr["DateDue"].ToString() }); } else { for (int i = 0; i < acList.Count; i++) { if(dr["RequestNumber"].ToString() != acList[i].RequestNumber) { acList.Add(new AssignedClass { Project = dr["Project"].ToString(),DateDue = dr["DateDue"].ToString() }); } else { dr.Delete(); } } } 解决方法
使用LINQ,就像检查是否有匹配一样简单:
if ( !acList.Any(a => a.RequestNumber == dr["RequestNumber"].ToString() ) acList.Add( ... ); 此外,似乎开头将dRow分配给dr的代码没有任何意义.只需在代码的其余部分直接使用dRow即可.而且我认为你不想将(acList.Count == 0)视为特殊情况,因为这只会导致你必须复制你的逻辑,从而维护相同代码的两个独立副本.所以,如果我理解正确,这个简化的代码应该完成同样的事情: foreach (DataRow dRow in dt.Rows) { if ( !acList.Any(a => a.RequestNumber == dRow["RequestNumber"].ToString() ) { acList.Add(new AssignedClass { Project = dRow["Project"].ToString(),RequestNumber = dRow["RequestNumber"].ToString(),RequestId = dRow["RequestId"].ToString(),TaskType = dRow["TaskType"].ToString(),TaskId = dRow["TaskId"].ToString(),TaskStatus = dRow["TaskStatus"].ToString(),AssignedTo = dRow["AssignedTo"].ToString(),DateDue = dRow["DateDue"].ToString() }); } } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |