如何使用LINQ从kvp列表中删除kvp列表?

时间:2013-12-05 05:52:56

标签: c# linq list

我有2个名单说:

List< KVP< string, List< KVP< string, object>>>> MainList = new List< KVP< string, List< KVP, object>>>>();

另一个清单:

List< KVP< string, object>> SubList = new List< KVP< string, object>>();

SubList是MainList列表的一部分&lt; KVP&LT; string,object&gt;&gt;部分。

如何使用LINQ删除MainList中存在的与SubList中存在的项目(条件:键匹配)相似的项目?

2 个答案:

答案 0 :(得分:1)

我必须弄清楚你真正想要的东西,也许这正是你想要的:

var newMainList = MainList.Select(e=> 
                             new KeyValuePair<string,List<KeyValuePair<string,object>>>(
                                     e.Key,
                                     e=>e.Value
                                         .Where(x=>!SubList.Any(a=>a.Key==x.Key))
                                         .ToList())).ToList();

答案 1 :(得分:0)

有很多方法可以解决这个问题,但RemoveAllExcept方法应该有效。

[Test]
public void RemoveDuplicates()
{
    // Arrange
    var mainList = new List<string>() { "Bogus", "Bodacious", "Brains" };
    var subList = new List<string>() { "Bogus" };
    // Act
    mainList.RemoveAll(search => subList.Contains(search)); // or if not a list 
    mainList = mainList.Except(subList).ToList(); 
    // Assert
    Assert.IsFalse(mainList.Any(search => subList.Contains(search)));
 }