我有一个包含名称和typeID的Inclage列表,我想为带有某种typeID的给定项目创建一个排除列表。但是捕获的是,如果一个名称根本没有出现在列表中,则不会从任何类型中排除。
我该如何使用linq?
List<NameTypeFilter> includeList = new List<NameTypeFilter>();
includeList.Add(new NameTypeFilter
{
Name = "N1",
Type = "T1"
});
MyItem myItem1 = new MyItem();
myItem1.Type = "T1";
MyItem myItem2 = new MyItem();
myItem1.Type = "T2";
MyItem myItem3 = new MyItem();
myItem1.Type = "T3";
// excludelist for myItem1 should contain nothing
// excludelist for myItem2 should contain N1
// excludelist for myItem3 should contain N1
includeList.Add(new NameTypeFilter
{
Name = "N2",
Type = "T2"
});
// excludelist for myItem1 should contain N2
// excludelist for myItem2 should contain N1
// excludelist for myItem3 should contain N1,N2
如果您共享代码的示例,它将有助于了解更多详细信息但是,根据我的假设,如果您添加LINQ条件,则可以使用Linq进行操作或跳过。
includeList.Where(y => !includeList.Any(z => z.Type == currentItemType && y.Name == z.Name))
我认为这是这样做的