.LinQ在哪里工作不正常

时间:2016-08-03 12:49:08

标签: linq where

我有文档表和标志表。 文档记录可与标志表中的许多记录相关联。

现在,当文档ID出现在标志表中时,我想获取文档表的所有记录。

我在这里得到所有文件:

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()时总是返回所有记录(在数据库中只存在一个兼容记录)

LinQ声明有什么问题?

1 个答案:

答案 0 :(得分:0)

问题是这个语句没有修改文档的内容,它只返回结果(你没有做任何事情):

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

文件仍然是完整清单。

将此行更改为:

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

然后在代码中使用matchingIDDocs代替“文档”。