餐馆表:T_Restaurant (id,name)
地址表:T_Address(id,restaurantId,address)
餐馆表和地址表是一对多的关系,即一个餐馆对应多个地址,
目的:查询出餐馆及最新地址
sql语句:
select T_Restaurant.*, (select top 1 address from T_Address where T_Address. restaurantId = T_Restaurant.id order by T_Address.id desc) from T_Restaurant
请问linq to sql 怎么写啊??
var query=db.T_Restaurant.Select(s=> new{ s.id, s.name, address=s.T_Address.OrderByDesc(o=>o.id).First().address });
不对吧:s.T_Address.OrderByDesc(o=>o.id).First().address 是取表中所有数据的第一个吧,没有把id相关联啊?
@滴水冰寒:
这种写法是建立了关系的, s.T_Address不是 ab.T_Address, s.T_Address是这一个餐馆的所有地址,不是所有的地址。
如果没建关系,用左连接参考地址:http://www.cnblogs.com/lyj/archive/2008/01/24/1051495.html
@Qlin: 如果2个表中建立了外键约束,我相信ling to sql会生成对应关系的,可是我这2个表并没有建立约束关系的,程序里怎么会知道呢
@滴水冰寒:
你的意思是 你没有建关系,现在程序里已经有了关系了?
你不设置,应该不知道,可以在两个实体模型中右键添加关系。
@Qlin: 谢谢,跟据你的语句提示,我已经写出来了,我一向不喜欢在数据中使用约束,这是我的毛病,呵呵