.LinQ 哪里不能正常工作

.Where in LinQ not working correctly

我有文件table和标志table。 Document 记录可以与 Signs table.

中的许多记录相关联

现在,当文档 ID 出现在 Signs [=44= 中时,我想获取 Documents table 的所有记录].

在这里我得到了所有文件:

var documents = (from c in context.documents select c);

在这里我得到了我所有的标志并保存到列表中:

var myDocuments = (from s in context.signs where s.UserId== id select s.ID).ToList();

此列表包含文档 ID 上的集合。

在这里,我试图获取 myDocuments 列表中存在的所有文档:

documents.Where(item => myDocuments.Contains(item.ID));

但是,当我执行 .ToList() 时总是 return 所有记录(在数据库中只存在一个兼容记录)

LinQ 语句有什么问题?

问题在于此语句不会修改文档的内容,它只是 returns 结果(您未对其进行任何操作):

documents.Where(item => myDocuments.Contains(item.ID));

文档仍然是完整列表。

将此行更改为:

var matchingIDDocs = documents.Where(item => myDocuments.Contains(item.ID));

然后在您的代码中稍后使用 matchingIDDocs 代替 "documents"。