我有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中存在的项目(条件:键匹配)相似的项目?
答案 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)
有很多方法可以解决这个问题,但RemoveAll或Except方法应该有效。
[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)));
}