如何进行Linq外部联接
我有一个包含我想要的所有值的存储库 我们将其称为如何进行Linq外部联接,linq,left-join,Linq,Left Join,我有一个包含我想要的所有值的存储库 我们将其称为fieldsRepo 然后我有一个包含字段值的实体。我们将其称为entity.FieldValues 我需要编写一个查询,从fieldsRepo获取所有字段,并从entity.FieldValues获取它们的值(如果存在) 如何将其写为带有左连接的LINQ,这将过滤掉实体不包含字段的地方。我希望他们仍然包括在内 var query = from field in fieldsRepo join entityField in
fieldsRepo
然后我有一个包含字段值的实体。我们将其称为entity.FieldValues
我需要编写一个查询,从fieldsRepo
获取所有字段,并从entity.FieldValues
获取它们的值(如果存在)
如何将其写为带有左连接的LINQ,这将过滤掉实体不包含字段的地方。我希望他们仍然包括在内
var query = from field in fieldsRepo
join entityField in entity.FieldValues
on field.Id equals entityField.FieldId
select new { ... };
使用
join。。进入
(即GroupJoin)。每个连接的组将包含与字段值相关的值(如果有)
您必须使用DefaultIfEmpty
var query = from field in fieldsRepo
join entityField in entity.FieldValues
on field.Id equals entityField.FieldId into g
select new {
field.Id,
ValuesCount = g.Count()
};
var query = from person in people
join pet in pets on person equals pet.Owner into gj
from subpet in gj.DefaultIfEmpty()
select new { person.FirstName, PetName = (subpet == null ? String.Empty : subpet.Name) };