我正在使用实体框架从我的应用程序连接到数据库。我在SQL中有表,名为订单。它包含以下字段:TransactionId,ParticipantId并链接到交易表,该表与参与者表有一对多的连接。我需要使用具有以下属性的类列表从中获取数据:TransactionId,ParticipantId,OrganizationId。 Linq必须符合这样的条件:(orders.TransactionId == TransactionId && orders.ParticipantId == ParticipantId && orders.Transaction.Participants.Any(x=> x.Id == OrganizationId))
。这应该由一个查询完成,而不是由多个查询完成,因此,请不要像这样推荐foreach或smth。
答案 0 :(得分:0)
像@NetMage所说,一般我们都需要例子。假设你已经设置了dbcontext,问题非常简单:
public static void GetData(int transactionId, int participantId, int organizationId)
{
using (var db = new MyDbContext())
{
var query =
(
from t in db.Transactions
from o in db.Orders
.Where(w => w.TransactionId == t.TransactionId)
from p in db.Participants
.Where(w => w.TransactionId == t.TransactionId)
where t.TransactionId = transactionId &&
o.ParticipantId = participantId
select new { Order = o, Transaction = t, Participant = p}
);
}
}
同样,由于我们在这里没有很多信息,因此很难做得更多。你应该可以从那里拿走它。我知道我没有使用organizationId过滤器,但由于我不知道数据的目标形状,我不确定最佳路径是什么