问题描述
我有两个清单。首先是PROJECTNUMBER,其次是PROJECTMANAGER。数据就是“ PROJECTNUMBER PROJECTMANAGER”
让我们假设列表1:
1234 John
3214 Jack
和清单2:
1234 John
3214 Adam
在我需要的新列表3中
3214 Jack Adam
我有两个问题:
- 我当前的代码陷入无限循环,提供ProjectNumbers :)我当前的解决方案出了什么问题?
- 如何在Linq查询中实际达到预期结果?在Linq查询中将两个人都作为输出?我需要对Concat使用反向连接还是有更简单的解决方案?
这是我当前的代码:
static void Main(string[] args)
{
MFiles.SearchDeliveryProjectsInMFiles();
var ProjectsFromMFiles = MFiles.DeliveryProjectList.ToList();
var ProjectsFromLiinos = MainProcess.GetMyJoinedResult().ToList();
var output = (from ps1 in ProjectsFromLiinos
from ps2 in ProjectsFromMFiles
where !(ps1.HENKILONIMI == ps2.ProjectManager && ps1.TILAUSNRO == ps2.ProjectNumber)
select ps2.ProjectNumber).ToList();
foreach (var ProjectNumber in output)
{
Console.WriteLine(ProjectNumber);
}
Console.ReadKey();
}
解决方法
这实际上是基础数学
列表1 U列表2-列表1 n列表2 将为您提供所需的信息
如此基本的演示
IList<string> strList1 = new List<string>() {
"John","Jack"
};
IList<string> strList2 = new List<string>() {
"John","Adam"
};
var res = strList1.Union(strList2).Except(strList1.Intersect(strList2));
res.Dump();
对于您的情况,您需要编写IEqualityComparer<JoinedFandS>
以便比较两个两个类。