1

我有一个包含我想要的所有值的存储库

我们将其称为然后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 { ... };
4

2 回答 2

2

你必须使用 DefaultIfEmpty

http://msdn.microsoft.com/en-us/library/vstudio/bb397895.aspx

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) };
于 2013-02-26T15:53:02.743 回答
1

使用join .. into(即 GroupJoin)。每个加入的组将包含相关的字段值(如果有)

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()
            };
于 2013-02-26T15:47:38.230 回答