将表格“Person”包含在字段中:
IdPerson, Name, Description.
表格“FriendVisit”和
IdFriendVisit, Duration, TimeOfVisit, IdPerson
关系为1到n,其中1个人可以拥有n个FriendVisit。
我想让只有最后一次访问linq to sql statment的所有人。
像:
var allpersons = this.ObjectContext.Person.Include(p=>p.FriendVisit.OrderBy(fv => fv.TimeOfVisit).FirstOrDefault())
在Reality我只需要表FriendVisit的持续时间和表Person的名称,但我不知道这是否相关。
有某种形式的做法吗?
我想从孩子们那里搜索数据,然后把父母搞得一团糟......但是我想以“自然”的方式去做,给父母打电话,把孩子们搞定。
例如:
var allVisits = this.ObjectContext.FriendVisit.Include(p=>p.Persons).OrderBy(fv => fv.TimeOfVisit).FirstOrDefault())
答案 0 :(得分:2)
你可以尝试这个:
在查询语法
中var allPersons = from p in this.ObjectContext.Person
join f in this.ObjectContext.FriendVisit
on p.IdPerson equals f.IdPerson
group by new { p, f }
select new
{
Name = p.Name;
Duration = f.OrderBy(x=>x.TimeOfVisit).Last().Duration
};
或流利语法
var allPersons = this.ObjectContext.Person.Join(this.ObjectContext.FriendVisit,
x=>x.IdPerson,
y=>y.IdPerson
(x,y)=> new { x, y }
).GroupBy(z=>z)
.Select(x=> new
{
Name = p.Name;
Duration = f.OrderBy(y=>y.TimeOfVisit)
.Last()
.Duration
});