我有了这本身自我引用,我想与其父亲一起加载配置文件在一个SQL配置文件父亲财产Profile类连接语句哪些错误与本组加入
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语句解析。你可以在一个C#LINQ语句中编写你的GroupJoin吗? – mellamokb 2011-04-29 19:06:34
对不起,如果我对linq没有那么熟练,但是这不是提取整个桌子?您正在获取ID,然后在另一个字段上的同一个表中将组加入(与所有reconr进行比较)... – 2011-04-29 19:26:08