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 に答える