为了账号安全,请及时绑定邮箱和手机立即绑定

过滤列表并删除不需要的数据 C#

过滤列表并删除不需要的数据 C#

C#
哔哔one 2021-11-28 19:43:40
我有一个list用户timespan,为了争论,让我们说一个月。因此,list某些用户不符合我针对某个目标所需的标准,因此我想过滤掉list并将过滤掉的数据显示到另一个list. 所以我如何复制list如下:List<tblList1> List1 = new XPQuery<tblList1>(session)    .Where(w => w.UserCode != null).ToList();然后,我使用foreach循环遍历此列表,将数据与我的标准进行比较,然后将它们添加到运行良好的新列表中。我现在遇到的问题是删除我从第一个list. 我在我创建的新方法中尝试了以下操作:public void DeleteData(Session session){    List<tblList1> List1= new XPQuery<tblList1>(session)        .Where(w => w.UserID != null).ToList();    List<tblList2> List2= new XPQuery<tblList2>(session)        .Where(w => w.UserID!= null).ToList();    List1.RemoveAll(w => w.UserID == List2.Any(e => e.UserID== w.UserID));}所以最后我想把list1中的数据全部删除,这样我们就可以查看list2中删除的数据了。如果我能正确获取 RemoveAll LINQ 语句,因为当前行不起作用,并且我不确定如何在 LINQ 中处理此问题,将不胜感激。
查看完整描述

2 回答

?
湖上湖

TA贡献2003条经验 获得超2个赞

您可以只使用 LINQWhere来过滤您的列表,然后Except获取未过滤的值:


List<Item> all = ...; // your original list

List<Item> matching = all.Where(x => IsMatching(x)).ToList(); // IsMatching is any filtering logic

List<Item> notMatching = all.Except(matching).ToList();


查看完整回答
反对 回复 2021-11-28
?
慕娘9325324

TA贡献1783条经验 获得超4个赞

就我从评论中看到的:


我想将 List1 {1, 2, 3} 与标准进行比较,发现 { 2 } 不符合该标准并将其添加到 List2 中。然后从 List1 中删除 { 2 }


我根本看不出Linq 有任何需要。让我们并行填充两个列表:


List<tblList1> List1 = new List<tblList1>();

//TODO: please, check types; it seems that it should be List<tblList1> List2

List<tblList2> List2 = new List<tblList2>();


foreach (var item in new XPQuery<tblList1>(session).Where(w => w.UserID != null)) {

  if (YourCriteriaHere)

    List1.Add(item); // <- Criteria met: add to List1 

  else

    List2.Add(item); // <- Doesn't meet: "delete" from (just not add to) List1 into List2 

}


查看完整回答
反对 回复 2021-11-28
  • 2 回答
  • 0 关注
  • 306 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信