C#通过与其他列表进行比较来删除列表上的元素

时间:2018-06-28 01:19:29

标签: 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.supermarket
         select brand)

var princiapalList = (from a in db.candyStore 
     select brand)

有什么想法吗?

谢谢!

3 个答案:

答案 0 :(得分:0)

您可以使用HashSet<T>的{​​{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.supermarket
         select brand);

var princiapalList = (from a in db.candyStore 
         select brand)

var princiapalSet = new HAshSet<T>(princiapalList);
princiapalSet.ExceptWith(list1.Concat(list2).Concat(list2));

princiapalSet现在仅包含不在列表中的元素。

答案 1 :(得分:0)

您要测试列表联合中的成员身份。

generate newvar=0

forvalues i=1/25 {
    replace newvar=1 if PR`i'=="8512" | PR`i'=="8521"  
}

例如。

答案 2 :(得分:0)

好吧,我知道了,现在我无法加入可查询类型的列表,所以它是这样的:

    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();

感谢帮助人员!我希望这对其他人也有帮助。