[英]LINQ Join (Left Outer) with Take(1)
I have the below LINQ that is returning zero IF there aren't any Addresses(Inner Join). 如果没有任何地址(内部联接),我将在下面的LINQ中返回零。 How would I make this an Outer Join and then only Take(1)
? 我如何将其设置为外部联接,然后仅Take(1)
?
var results = query.Join(
DB.tblAddresses.Where(t => t.AddressTypeID == 'm' || t.AddressTypeID == 'b').OrderByDescending(x => x.AddressTypeID),
p => p.PersonID,
a => a.PersonID,
(p, a) =>
new
{
p.PersonID,
p.LastName,
p.FirstName,
p.MiddleName,
p.SSN,
p.BirthDate,
p.DeathDate,
AddressLine1 = a.AddressLine1 ?? string.Empty
});
return results.CopyLinqToDataTable();
query
.SelectMany (
p => DB.tblAddresses.Where((t => t.AddressTypeID == 'm' || t.AddressTypeID == 'b') && t.PersonID == p.PersonID)**.DefaultIfEmpty()**,
(p, t) =>
new
{
p.PersonID,
p.LastName,
p.FirstName,
p.MiddleName,
p.SSN,
p.BirthDate,
p.DeathDate
Addressline1 = (t == null ? null : t.AddressLine1)
}
) )
Use DefaultIfEmpty. 使用DefaultIfEmpty。 Take a look at http://social.msdn.microsoft.com/Forums/en-US/linqtosql/thread/b285be6a-3324-4b16-89cd-856190090701 看看http://social.msdn.microsoft.com/Forums/en-US/linqtosql/thread/b285be6a-3324-4b16-89cd-856190090701
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.