使用LINQ在两个相关的IEnumerable查询对象之间选择所需的结果

时间:2013-11-01 17:29:52

标签: c# linq

我认为这是一个基本问题,但我感到困惑。我有两个对象OrdersOrderTags。在数据库中,OrdersOrderTags无关,但OrderTagsOrders有FK关系。

所以我在上下文中捕获了两个对象:

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对象都有TagIDOrderID。所以我只想要与我查找过的标签相对应的订单。任何人都可以帮助我使用语法,这样我就能得到我想要的东西吗?

4 个答案:

答案 0 :(得分: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();

答案 1 :(得分:2)

使用LINQ查询:

orders = orders.Where(order => tags.Contains(tag => tag.ID == order.OrderID)).ToList();

答案 2 :(得分:1)

对lambda表达式使用LINQ查询:

orders.RemoveAll(x => !tags.ConvertAll(y => y.tagId).Contains(x.tagID));

答案 3 :(得分:1)

这样的事情应该有效。

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

您也可以执行加入。