我有两个列表需要加入才能在它们之间设置一个值。
第一个列表是companytaxesnumber
,第二个列表是ordertaxes
。
他们都有一个TaxId
用来加入它们。
这里的代码是:
destination.OrderTaxes = destination.OrderTaxes.
Join(src.companytaxesnumber, vModel => vModel.TaxId, source => source.TaxId, (dest, source) =>
{
dest.LegalNumber = source.LegalNumber; return dest;
}).ToList();
我的问题是如果companytaxesnumber
的数据少于ordertaxes
(由于任何原因),则连接运算符将返回结果
计数为companytaxesnumber
且将丢失其无法加入的其他ordertaxes
数据。
您是否知道即使某些数据未加入ordertaxes
,我如何确保获得完整的companytaxesnumber
列表?
答案 0 :(得分:2)
您正在寻找LEFT OUTER JOIN
,您可以通过以下方式完成任务:
var result = from o in destination.OrderTaxes
join d in src.companytaxesnumber on o.TaxId equals d.TaxId into temp
from p in temp.DefaultIfEmpty()
select new { /* assign the fields appropriately */ };
LEFT OUTER JOIN
将允许您保留第一个集合上的所有元素,无论它是否在第二个集合中有任何相关元素。