C# c通过与其他列表进行比较来删除列表中的元素
我用C来做这件事。我有3个列表,将从不同的数据库中填充。我想将这3个列表与我的主体列表进行比较,如果主体列表中的某个项目不在这3个列表中,我想将其从主体列表中删除 例如:C# c通过与其他列表进行比较来删除列表中的元素,c#,linq,C#,Linq,我用C来做这件事。我有3个列表,将从不同的数据库中填充。我想将这3个列表与我的主体列表进行比较,如果主体列表中的某个项目不在这3个列表中,我想将其从主体列表中删除 例如: var list1 = (from a in db.candyStore select brand) var list2 = (from b in db.AnotherCandyStore select brand) var list3 = (from c in db.supermark
var list1 = (from a in db.candyStore
select brand)
var list2 = (from b in db.AnotherCandyStore
select brand)
var list3 = (from c in db.supermarket
select brand)
var princiapalList = (from a in db.candyStore
select brand)
有什么办法吗
提前谢谢 您可以使用HashSet的方法:
PrinciapSet现在只包含不在列表中的元素。您希望测试列表联合中的成员资格
principalSet.Where(x=>list1.Concat(list2).Concat(list3).Contains(x));
例如。好的,我知道了,我现在没有,我可以加入queryable类型的列表,所以它是这样的:
var list1 = (from a in db.candyStore
select brand);
var list2 = (from b in db.AnotherCandyStore
select brand);
var list3 = (from c in db.supermarket
select brand);
var princiapalList = (from cs in list1
join acs in list2 on cs.BrandID equals acs.BrandID
join sm in list3 on sm.BrandID equals sm.BrandID
where cs.BrandID == acs.BrandID && cs.BrandID == sm.BrandID
select new { whatever }).toList();
谢谢你们的帮助!我希望这也能帮助其他人 很小的一点,但这里没有3个列表,您有3组IQueryable。它们有时可能表现得像列表,但要小心,因为它们不是那么简单!您是对的,我试图删除一个项目,但出现异常:集合已修改,无法执行Enumeration操作。您确定这对提供的列表有效吗?在我看来,它们就像是实体框架的问题。也许我误解了他想要什么,但我认为他想要的是intersectWith而不是ExceptWith。另外,我认为他只想与brand属性进行比较。这假设princiapalList和其他查询的元素是相同的类型,并且它们实现了Equals&GetHashCode。嘿!是的,我这么问是因为我不确定是否可以删除一个查询项。有什么方法可以让我删除我不想要的元素,然后把整个东西重新转换成可查询的吗?@DionisMatos,你为什么要把它再次转换成可查询的?
var list1 = (from a in db.candyStore
select brand);
var list2 = (from b in db.AnotherCandyStore
select brand);
var list3 = (from c in db.supermarket
select brand);
var princiapalList = (from cs in list1
join acs in list2 on cs.BrandID equals acs.BrandID
join sm in list3 on sm.BrandID equals sm.BrandID
where cs.BrandID == acs.BrandID && cs.BrandID == sm.BrandID
select new { whatever }).toList();