通过linq中的另一个表的id过滤表

时间:2014-02-14 21:19:18

标签: c# sql linq

所以假设我有一个来自linq的实体的tableIds表,它与列categoryID的另一个名为finishedDownloads的表有关系。如何创建一个新的mappedIds表,其中不包含在finishedDownloads中找到的ID?

我理解像where和except这样的命令,但我只是不确定怎么说,看看这个id,然后将它与id进行比较。

我正在寻找相当于

的东西
SELECT * FROM  mappedIds mIDs WHERE mIDs.CategoryID NOT IN
(SELECT categoryID FROM finishedDownloads)

编辑:映射的ID存储在表

3 个答案:

答案 0 :(得分:4)

您没有说明您的上下文是如何设置的,但即使它不完全符合我的想法,您也可以很容易地看到这个想法:

var results = _context.MappedIds
                      .Where(x => !_context.FinishedDownloads
                                           .Select(f => f.categoryID)
                                           .Contains(x.CategoryID));

答案 1 :(得分:2)

var idList = finishedDownloads.Select(f => f.categoryID);

var result = mappedIds.Where(m => !idList.Contains(m.CategoryID)).ToList();

答案 2 :(得分:1)

试试这个

var result = mappedIds.Select(m=>m.CategoryId).Except(finishedDownloads
                                                       .Select(f=>f.categoryId));