我的C#代码中有2个列表。
第一个列表具有以下结构
List<ObjectA>
ObjectA是以下结构的类
public class ObjectA
{
public string ID { get; set; }
public string EId1 { get; set; }
public string EId2 { get; set; }
public string EId3 { get; set; }
public string EId4 { get; set; }
}
第二个列表具有以下结构
List<ObjectB>
其中ObjectB是以下结构的类
public class objectB
{
public string ID{get;set;}
public string Name{get;set;}
}
我可以使用以下查询在单个列上进行联接
var finalList= from objA in objectAList
join objB in objectBList
on objA.EId1 equals objB.ID
select new
{
Id = objA.ID,
EId = objB.Id,
Name = objB.Name
};
这很好。但是我需要检查第二个列表中的Id是否匹配第一个列表中的4列(Eid1,Eid2,Eid3,Eid4)中的任何一个。我该怎么办?
答案 0 :(得分:3)
您的意思是这样吗? :
var finalList= from objA in objectAList
from objB in objectBList
where objA.EId1 == objB.Id
|| objA.EId2 == objB.Id
|| objA.EId3 == objB.Id
|| objA.EId4 == objB.Id
select new
{
Id = objA.ID,
EId = objB.Id,
Name = objB.Name
};
答案 1 :(得分:1)
var finalList =
from objA in listA
join objB in listB
on objA.EId1 equals objB.ID
where new string[] { objB.ID, objA.EId2, objA.EId3, objA.EId4 }.Contains(objA.ID)
select new { Id = objA.ID, EId = objB.ID, Name = objB.Name };
这就是您要寻找的。但是,我认为您设计的对象并不是以最佳方式设计的。如果您有任何控制权,我会