1

我认为这是一个基本问题,但我感到困惑。我有两个对象,Orders并且OrderTags. 在数据库中,Orders与 没有关系OrderTags,但OrderTags与 有 FK 关系Orders

所以我在我的上下文中捕获这两个对象,如下所示:

orders = context.Orders;
tags   = context.OrderTags.Where(tag=> tag.ID = myID);

现在我想将订单列表减少到仅等于我的标签列表中存在的订单。这是我想做的最好的伪代码:

orders = orders.Where(every order id exists somewhere in the tags list of order ids)

为了澄清,每个Tag对象都有一个TagID和一个OrderID。所以我只想要与我查找的标签相对应的订单。任何人都可以帮助我使用语法,以便我可以得到我正在寻找的东西吗?

4

4 回答 4

4

使用LINQ查询:

var results = (from o in context.Orders 
                   join t in context.Tags on o.OrderId equals t.OrderId
               where t.ID == myID
               select o ).ToList();
于 2013-11-01T17:34:01.880 回答
2

使用LINQ查询:

orders = orders.Where(order => tags.Contains(tag => tag.ID == order.OrderID)).ToList();
于 2013-11-01T17:35:08.843 回答
1

使用带有 lambda 表达式的 LINQ 查询:

orders.RemoveAll(x => !tags.ConvertAll(y => y.tagId).Contains(x.tagID));
于 2013-11-01T17:33:53.477 回答
1

像这样的东西应该工作。

orders = orders.Where(o=>tags.Contains(t=>o.ID == t.OrderID));

您也可以只执行联接。

于 2013-11-01T17:34:16.130 回答