我正在尝试创建一个linq连接语句,它根据两个条件从表中连接一个对象
MESSAGES
======
ID (int)
UserID (Guid)
MESSAGEPART
======
MessageID (int)
IsPlaintext (bool)
MessageContent (nvarchar(max))
这是我想写的查询,基本上是:
var messages = from m in db.Message
join p in db.MessagePart on m.ID equals p.MessageID
and p.IsPlaintext equals false
不幸的是,这不起作用。这是我能做的最好的事情。
var messages = from m in db.Message
join p in
(from x in db.MessagePart where x.IsPlaintext == false select x)
on m.ID equals p.MessageID
这似乎有点啰嗦。是否有一种更优雅的方式来实现它?
答案 0 :(得分:4)
优雅的解决方案。
var messages = from m in db.Message
join p in db.MessagePart on m.ID equals p.MessageID
where p.IsPlaintext == false
答案 1 :(得分:0)
你可以尝试这个:
var messages = from m in db.Message
join p in db.MessagePart
on new { m.ID, false } equals { p.MessageID, p.IsPlaintext }
或者你可以试试这个:
var messages = db.Message.Join(db.MessagePart.Where(x=>x.IsPlainText==false),
x=>x.ID,
y=>y.Id,
(x,y)=>new {});
在new { }
内,您将声明您选择的匿名类型的属性。
PS。如果您更新帖子并显示您要选择的字段,我也可以更新。