を含める:は、私は、以下の単純化された設定を持つエンティティクエリにLINQの中に無関係なテーブル
Public User
{
//Primary key
public int Id {get;set;}
public string Name {get; set;}
}
Public UserInfo
{
//Primary key
public int Id {get;set;}
//Foreign key to user table
public int userKey {get; set;}
}
テーブル間の関係は、多くのUserInfo
に一人のユーザーである私はuser
テーブルから選択しようとしていますし、 userInfo
テーブルを含めます。
私はこれを行うことはできません。
var users = Context.user.Include(u => u.userInfos);
をユーザテーブルからUserInfo
テーブルへの参照が存在しないとして。
context.userInfo.include(x => x.user)
をしかしUserInfoテーブル内に対応するエントリがない場合、これは私が望んでいないものをしている、何も結果を返しません。
私はこれを行うことができます。また、これはuserInfoごとに1つの行を返しますが、userInfoのリストをパラメータとして使用して1つの行をuserに追加します。
var users = from us in Context.user
join inf in Context.userInfo
on us.Id equals inf.userKey
select new //etc
をしかし、これはまた、上記のように、ユーザ情報エントリごとに同じ問題を1行を返します。
同様に私はこのようなテーブルを結合することができます。
要約すると、include
の機能と同じ方法で結果を得るために、このテーブルを含める方法があります。
私はこれを含めてすべての私の設定を調整することができます知っているが、それは私がここで尋ねているものではありません。
私はこれが行われますが、すべての私のこれまでのところ、私は決定的な答えを見つけることができませんでしたグーグルからすることはできません....
'User'はそのようなプロパティ' UserInfos'か何かを持っていますか? (ちょっとしたお手伝いをして、大文字で始まるクラス名やプロパティ名のような命名規則に従ってください)。 –
あなたはlinqで左結合を探していますか?ここに解決策がありますhttps://stackoverflow.com/questions/3404975/left-outer-join-in-linq –