我有两张桌子,卡片和用户。卡片具有对用户的引用,因此用户可以拥有多张卡片,但一张卡片只能有一个用户。 我做了这个mysql查询,返回Card.Id和User.LastName:
SELECT Card.Id,User.LastName FROM Card
left join User on Card.UserId = User.Id
where Card.Id = '1';
如何使用servicestack ormlite进行查询? 我尝试过这样的事情:
var cardIdAndUserName = db.Dictionary<int, string>(db.From<Card>()
.LeftJoin<Card, User>((c,u) => c.UserId == u.Id)
.Select(card => new {card.id, user.Lastname}));
我无法使上面的代码生效,因为.Select语句只允许我从Card表中获取列。我想我可以在db.dictionary调用中创建一个db.Select(InfoINeedObject)intead,但是我必须创建一个新类InfoINeedObject。
答案 0 :(得分:3)
有新的Select Overloads允许您指定多个表added in this commit,现在可以让您这样做:
var cardIdAndUserName = db.Dictionary<int, string>(db.From<Card>()
.LeftJoin<Card, User>()
.Select<Card,User>((card,user) => new {card.id, user.Lastname}));
注意:联接可以暗示it doesn't need to be specified
此更改可从 v4.0.39 + 获得,现在为available on MyGet。