如何使用连接运算符保留原始值?
How to keep original values with join operator?
我有两个列表需要加入以在它们之间设置值。
第一个列表是 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
(出于任何原因),连接运算符将 return 结果
计数为 companytaxesnumber
,并且将丢失 ordertaxes
的其他无法加入的数据。
您知道吗,即使某些数据尚未与 companytaxesnumber
合并,我如何确保获得完整的 ordertaxes
列表?
您正在寻找 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 */ };
a LEFT OUTER JOIN
将允许您保留第一个集合中的所有元素,而不管它在第二个集合中是否有任何相关元素。
我有两个列表需要加入以在它们之间设置值。
第一个列表是 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
(出于任何原因),连接运算符将 return 结果
计数为 companytaxesnumber
,并且将丢失 ordertaxes
的其他无法加入的数据。
您知道吗,即使某些数据尚未与 companytaxesnumber
合并,我如何确保获得完整的 ordertaxes
列表?
您正在寻找 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 */ };
a LEFT OUTER JOIN
将允许您保留第一个集合中的所有元素,而不管它在第二个集合中是否有任何相关元素。