LINQ在两个或多个条件下连接
本文关键字:条件下 连接 两个 LINQ | 更新日期: 2023-09-27 18:08:33
我正在尝试创建一个linq join语句,该语句基于两个条件从表中连接对象
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
这似乎有点啰嗦。有没有更优雅的方式来实现它?
一个优雅的解决方案。
var messages = from m in db.Message
join p in db.MessagePart on m.ID equals p.MessageID
where p.IsPlaintext == false
你可以试试这个:
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 { }
中,您将声明您选择的匿名类型的属性。
p。如果你更新你的帖子并显示你想要选择的字段,我也可以更新我的。