我认为这是一个基本问题,但我感到困惑。我有两个对象Orders
和OrderTags
。在数据库中,Orders
与OrderTags
无关,但OrderTags
与Orders
有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
对象都有TagID
和OrderID
。所以我只想要与我查找过的标签相对应的订单。任何人都可以帮助我使用语法,这样我就能得到我想要的东西吗?
答案 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));
您也可以执行加入。