C# 将循环转换为linq表达式
我有两张单子。请参见下面的我的代码:C# 将循环转换为linq表达式,c#,C#,我有两张单子。请参见下面的我的代码: public class Person { public string Name { get; set; } public int ItemOneId { get; set; } public int ItemTwoId { get; set; } } public class Item { public int ItemOneId { get; set; } public int ItemTwoId { get;
public class Person
{
public string Name { get; set; }
public int ItemOneId { get; set; }
public int ItemTwoId { get; set; }
}
public class Item
{
public int ItemOneId { get; set; }
public int ItemTwoId { get; set; }
}
List<Person> persons = new List<Person>
{
new Person
{
Name = "a",
ItemOneId = 11,
ItemTwoId = 23
},
new Person
{
Name = "c",
ItemOneId = 11,
ItemTwoId = 56
},
new Person
{
Name = "d",
ItemOneId = 109,
ItemTwoId = 59
}
};
List<Item> items = new List<Item>
{
new Item
{
ItemOneId = 11,
ItemTwoId = 56
},
new Item
{
ItemOneId = 1,
ItemTwoId = 2
}
};
公共类人物
{
公共字符串名称{get;set;}
public int ItemOneId{get;set;}
公共int ItemTwoId{get;set;}
}
公共类项目
{
public int ItemOneId{get;set;}
公共int ItemTwoId{get;set;}
}
名单人员=新名单
{
新人
{
Name=“a”,
ItemOneId=11,
ItemTwoId=23
},
新人
{
Name=“c”,
ItemOneId=11,
ItemTwoId=56
},
新人
{
Name=“d”,
ItemOneId=109,
ItemTwoId=59
}
};
列表项=新列表
{
新项目
{
ItemOneId=11,
ItemTwoId=56
},
新项目
{
ItemOneId=1,
ItemTwoId=2
}
};
我想从人员列表中获取所有人员,其中ItemOneId和ItemTwoId在项目列表中不存在。我有以下代码-是更好的解决方案吗
List<Person> result = new List<Person>();
foreach(Person person in persons)
{
if (!items.Any(x => x.ItemOneId == person.ItemOneId && x.ItemTwoId == person.ItemTwoId))
{
result.Add(person);
}
}
列表结果=新列表();
foreach(一人一人)
{
如果(!items.Any(x=>x.ItemOneId==person.ItemOneId&&x.ItemTwoId==person.ItemTwoId))
{
结果:增加(人);
}
}
或者可能没有其他解决方案?下面的代码应该可以工作
List<Person> result = new List<Person>();
foreach(Person person in persons)
{
if (!items.Any(x => x.ItemOneId == person.ItemOneId && x.ItemTwoId == person.ItemTwoId))
{
result.Add(person);
}
}
var result = persons.Where(p => !items.Any(x => x.ItemOneId == p.ItemOneId && x.ItemTwoId == p.ItemTwoId);