に参加する私は、私は1つのSQLで、プロファイルの父親と一緒にプロファイルをロードしたい自分自身への自己参照父親の財産を持っているプロファイルのクラスを持っているの文いただきました。このグループで間違っては
Select * FROM profile left join profile as father on profile.fatherid = father.id where profile.id = 650
に参加だから私次のLINQ文を作成したが、代わりにそれについてのSQL文を実行し、次の文
select * from profiles
select * from profiles where id = 650
一緒に続いて、メモリ内のそのグループにそれらを実行しますが、明らかに私は、データベース全体をロードしたいとは思わないでしょう。
private class Result
{
public Profile Profile { get; set; }
public IEnumerable<Profile> Fathers { get; set; }
}
private Result MapFather(Profile p, IEnumerable<Profile> father)
{
return new Result() {Profile = p, Fathers = father.DefaultIfEmpty()};
}
var profiles = from p in db.Profiles where p.ID.Equals(650) select p;
var fathers = from f in db.Profiles select f;
var groupJoin = profiles.GroupJoin(fathers,
p => p.FatherID,
f => f.ID,
MapFather).ToList();
あなたの文では、LINQは、単一のSQLステートメントとして解析するためには複雑すぎるかもしれません。 GroupJoinを単一のC#LINQステートメントに記述できますか? – mellamokb
私はlinqで熟練していないのですが、これはテーブル全体をフェッチしないのですか? IDをフェッチして、別のフィールドの同じテーブルに参加する(すべての再構成と比較する)グループを作成しています... –