我有个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中处理此问题,将对您有所帮助。
您可以只使用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();
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句