请考虑以下事项:
对象A具有属性:
Name
Location
对象B具有属性:
Nickname
Name
Location
City
State
我有List<ObjectA>
和List<ObjectB>
我正在尝试制定一个linq语句,该语句将返回List<ObjectB>
中存在Name
和Location
List<ObjectA>
的所有对象{{1}}
我发现的所有内容都基于简单对象或相同对象的列表,而不是具有相似属性的唯一对象列表。
答案 0 :(得分:2)
从概念上讲,这只是这两个表的连接。
var query = listB.GroupJoin(listA,
b => new{ b.Name, b.Location},
a => new{ a.Name, a.Location},
(b,matchingAs) => b);
答案 1 :(得分:1)
listB.Where(x => listA.Any(a => a.Name == x.Name && a.Location == x.Location));
答案 2 :(得分:0)
您可以加入不同类型的列表,并使用匿名类型来定义&#34;相等&#34;:
var query =
from b in listB
join a in listA into As
on new {b.Name, b.Location} equals new {a.Name, a.Location}
select b;
答案 3 :(得分:0)
List<ObjectA> listA = new List<ObjectA>();
List<ObjectB> listB = new List<ObjectB>();
List<ObjectB> commonList = listB.Where(b => listA.Any(a => b.Name == a.Name && a.Location == b.Location)).ToList();
这将为您提供B中所有在列表A中具有匹配名称和位置的对象