.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"。
我有文件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"。